链接.. '(null)' 的 .接口'STREAM' 返回了对列 '[!BulkInsert]

随着服务器升级,SQL Server2005,SQL Server2008逐渐成为主流;但是伴随也出现 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据”,问题:

1、DTS部属服务器不变,一些原来DTS运行正常的作业,当目的服务器改称2005后,作业也会失败,错误:

向SQL Server2008里导入数据是出现错误“SQL 错误描述为: 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据”,已打了SQL Server2008的最新补丁,在SQL Server2005里有同样的问题。

解决办法:扩充目的表对应字段长度结果后可以解决。一般是半个汉字/或者其他符号导致.

一些dts链路改成SSIS后,

解决办法1:一般是半个汉字/或者其他符号导致.扩充目的表结果后可以解决

 

2、部属服务器整体升级成SQL Server2008,所有链路升级成SSIS。

在部署链路调试过程中,发现sqlserver服务器启动参数缺少:-T4808。
如果没有设置该启动参数,则SSIS包遇到字符截断的情况会抛出错误,即使在ssis包中设置忽略字符截断仍然报错:
链接服务器 '(null)' 的OLE DB访问接口 'STREAM'返回了对列'[!BulkInsert].fieldname'无效的数据
例如:文本数据导入数据库表中,遇到描述信息非常长,超过字段长度,如果没有设置参数:-T4808,
即使在SSIS中设置忽略截断,也会报错。sql2000DTS遇到这种情况会自动截断,不会出错。
解决办法:在SQL Server启动过程中增加参数4808。(该过程设计SQL Server服务重起)

1. 在 SQL Server 配置管理器中,单击“SQL Server 服务”。
2. 在右窗格中,右键单击 SQL Server (<实例名>),再单击“属性”。
3. 在“高级”选项卡的“启动参数”框中,键入“;-T4808”(加分号和-T4808)。 

4.设置完成后,重启SQL Server服务,在查询分析器中执行“DBCC tracestatus”,返回结果:
TraceFlag Status Global Session
4808 1 1 0
表明参数设置成功。

 

另:注意在导入时如果是文本文件除了设置字段长度之外,还需设置读取的文本长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值