随着服务器升级,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
表明参数设置成功。
另:注意在导入时如果是文本文件除了设置字段长度之外,还需设置读取的文本长度