2015-10-04 71 views
0

我有一个SSIS包,它从一个表中读取并插入到另一个表中。源表是varchar(50),目标是int。我没有做任何明确的转换。SSIS将文本插入int列

在目标步骤,我在看先进列属性和我看到输入列类型DT_STR长度50.外部列的类型DT_I4长度4.

当试图复制一个值,例如作为99.00,我在目的地得到0。

我一直无法在我的本地工作站上重现这一点,但我可以看到它在生产中发生......本地,我得到了99.我还应该看到什么?

+0

注 - 两个表位于同一台服务器上的同一个数据库中。 SQL Server 2012. – JeffBrasher

+2

正在修复软件包以显式从DT_STR 50转换为int选项吗? – billinkc

+0

是的 - 我可以修剪尾部零并明确地转换为int - 这将是正确的方式。我的问题是关于如何重现这一点。当我在本地尝试时,99.00被插入为99.在发生这种情况时,我无法完全访问生产。我可以看到源,目标,并从服务器提取代码。如果我不能确切地重现问题,我如何向其他人保证我已经解决了问题?如果我不能复制,我没有根本原因。 – JeffBrasher

回答

0

源表是varchar(50),目标是int。我不是 做任何明确的转换。

玩火你是,因为这将引入错误,如果值不能转换为整数。一个优越的想法是使用派生列任务转换为可以转换的值的整数,然后测试任何无法转换的值并优雅地处理它们。