您的位置:首页 > 其它

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

2012-05-02 10:52 351 查看
随着服务器升级,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

表明参数设置成功。

另:注意在导入时如果是文本文件除了设置字段长度之外,还需设置读取的文本长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐