我正在将一些数据从DB2上传到SQL2005。该表包含一个文本字段,在DB2中长度为2000个字符,但在SQL中设置为varchar(2000)。
当我在查询浏览器中运行插入时,它处理正常并且数据被正确复制,但是当在我的存储过程中运行相同的语句时,该字段的数据仅被错误地复制并显示为一系列奇怪的字符。
该字段偶尔会包含控制字符,但即使不存在,也会出现问题。
我是否需要将一个设置应用于我的存储过程才能使插件正常工作?
或者我是否需要使用强制转换或转换数据才能使其正确显示。
感谢。
更新:感谢您的建议。现在看来,问题是由我们用于创建包含DB2数据库的链接服务器的软件引起的。当通过存储过程运行时,这不能处理2000字符长的字段,但是可以在交互式运行时处理。
我最终解决了这个问题,将字段拼接到10 200个字符长的字段中进行上传,然后当它们在SQL数据库中时再次重新加入它们。
答案 0 :(得分:1)
听起来来自db2的数据是在不同的字符集中。你应该确保它不是EBCDIC或类似的东西。
此外,尝试从SQL Server Management Studio(查询浏览器)调用存储过程,以查看它是否正常工作。
答案 1 :(得分:0)
您可能希望将varchar(2000)更改为nvarchars(2000)(在存储过程和表中 - 我假设它作为参数存在)。这将允许它们保存两个字节的字符。它取决于DB2配置,但可能是它导出UTF-16(或类似)而不是UTF-8。
答案 2 :(得分:0)
此问题是由我们用于创建DB2数据库的链接服务器的第三方软件引起的。当通过存储过程运行时,这不能处理2000字符长的字段,但是可以在交互式运行时处理。
我最终解决了这个问题,将字段拼接到10 200个字符长的字段中进行上传,然后当它们在SQL数据库中时再次重新加入它们。