我正在从DB2上传一些数据到SQL2005。该表包含一个文本字段,在DB2中长度为2000个字符,但在SQL中设置为varchar(2000)。
当我在查询浏览器中运行我的insert时,它处理得很好,并且数据被正确地复制,但是,当我的存储过程中运行相同的语句时,只有这个字段的数据被错误地复制,并且显示为一系列奇怪的字符。
该字段有时可以包含控制字符,但是即使不包含控制字符,也会出现问题。
是否需要对我的存储过程应用某种设置才能使插入正常工作?
或者我是否需要对数据进行强制转换或转换才能使其正确显示。
谢谢。
更新:感谢您的建议。现在看来,问题是由我们用来创建包含DB2数据库的链接服务器的软件引起的。当通过存储过程运行时,它无法处理长度为2000个字符的字段,但在以交互方式运行时,可以处理该字段。
我最终解决了这个问题,将字段拼接成10个200字符长的字段用于上传,然后当它们在SQL数据库中时再次连接它们。
发布于 2014-07-09 13:03:22
这个问题是由第三方软件引起的,我们使用该软件创建到DB2数据库的链接服务器。当通过存储过程运行时,它无法处理长度为2000个字符的字段,但在以交互方式运行时,可以处理该字段。
我最终解决了这个问题,将字段拼接成10个200字符长的字段用于上传,然后当它们在SQL数据库中时再次连接它们。
发布于 2009-04-29 03:55:31
听起来来自db2的数据使用了不同的字符集。您应该确保它不是EBCDIC或类似的东西。
此外,请尝试从SQL Server Management Studio (查询浏览器)调用存储过程,以查看它是否正常工作。
发布于 2009-04-29 11:43:22
您可能希望将varchar(2000)更改为nvarchars(2000) (在存储过程和表中-我假设它作为参数存在)。这将允许它们保存两个字节的字符。这取决于DB2配置,但可能是它导出的是UTF-16 (或类似格式),而不是UTF-8。
https://stackoverflow.com/questions/801978
复制相似问题