各位老大,复制又出现问题了,救命阿!!

xwy2258588 2005-08-27 08:17:06
数据库里的一张表数据有138592,现在复制到100000 就复制不过去了
这张表元先有个text字段,现在改成ntext了

错误日志:
Category:SQLSERVER
Source: OA2
Number: 4813
Message: 在数据流中缺少用于大容量复制 text、ntext 或 image 数据的文本长度。

进程未能大容量复制到表“"T_SendInfo"”中。. 步骤失败。
...全文
250 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwy2258588 2005-08-30
  • 打赏
  • 举报
回复
快照复制
lovcal 2005-08-30
  • 打赏
  • 举报
回复
用什么复制啊,DTS?
xwy2258588 2005-08-29
  • 打赏
  • 举报
回复
Category:COMMAND
Source: 失败命令
Number:
Message: select * from "T_User_Online" where 1 = 2

Category:ODBC
Source: OA2
Number: 22001
Message: 字符串数据,右截位


Category:ODBC
Source: ODBC SQL Server Driver
Number: 22003
Message: 数值超出范围

Category:ODBC
Source: ODBC SQL Server Driver
Number: 22003
Message: 数值超出范围


Category:ODBC
Source: ODBC SQL Server Driver
Number: 22001
Message: 字符串数据,右截位



为什么会出现这种错误????
天地客人 2005-08-28
  • 打赏
  • 举报
回复
实现数据导入/导出的存储过程
根据不同的参数,可以实现导入/导出整个数据库/单个表
调用示例:
--导出调用示例
----导出单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1
----导出整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',1

--导入调用示例
----导入单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0
----导入整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',0

*/
if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go
create procedure File2Table
@servername varchar(200)--服务器名
,@username varchar(200)--用户名,如果用NT验证方式,则为空''
,@password varchar(200)--密码
,@tbname varchar(500)--数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表
,@filename varchar(1000)--导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt
,@isout bit--1为导出,0为导入
as
declare @sql varchar(8000)

if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表
begin
set @sql='bcp '+@tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+'" /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
end
else
begin--导出整个数据库,定义游标,取出所有的用户表
declare @m_tbname varchar(250)
if right(@filename,1)<>'\' set @filename=@filename+'\'

set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql='bcp '+@tbname+'..'+@m_tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+@m_tbname+'.txt " /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go
czhw121 2005-08-28
  • 打赏
  • 举报
回复
留个email,给你复制方面的资料
xwy2258588 2005-08-27
  • 打赏
  • 举报
回复
又出现问题了

Message: 在数据流中缺少用于大容量复制 text、ntext 或 image 数据的文本长度。

这怎么办???
xwy2258588 2005-08-27
  • 打赏
  • 举报
回复
exec sp_change_agent_parameter 15,
'BcpBatchSize',
1000000
xwy2258588 2005-08-27
  • 打赏
  • 举报
回复
高定了
wxxzf 2005-08-27
  • 打赏
  • 举报
回复
學習
gimy007 2005-08-27
  • 打赏
  • 举报
回复
不懂,学习~~~~~~
xwy2258588 2005-08-27
  • 打赏
  • 举报
回复
找到原因了

BcpBatchSize 100000 大容量复制操作中要发送的行数。执行 bcp 操作时,批处理大小是作为一个事务发送到服务器上的行数,也是在分发代理程序记录 bcp 进度消息之前必须发送的行数。在执行 bcp out 操作时,使用的固定批处理大小是 1000。值为 0 表明没有记录消息。

BcpBatchSize 这个给怎么设置阿?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧