将数据从字符串最大长度50移动到字符串最大长度20时,SSIS截断警告

时间:2014-01-16 01:52:09

标签: sql sql-server ssis

请注意Noob SSIS的问题。我正在研究一个简单的数据库转换脚本。原始数据源将电话号码保存为名为Phone1的列中len = 50的字符串。目标表在名为Telephone的列中将电话号码保存为len = 20的字符串。我一直收到这个警告:

  

[110]]警告:由于从数据插入数据,可能会发生截断   流列“Phone1”,长度为50到数据库列   “电话”,长度为20。

我尝试了一些方法,包括添加派生列任务,将Phone1转换为长度为20的DT_WSTR字符串 - (DT_WSTR,20)(SubString(Phone1,1,20))并添加DataConversion任务进行转换从WT_WSTR(50)到WT_WSTR(20)的字段Phone1但它们都不起作用。我知道我可以在SQL String @ OLEDB Source中使用SubStr phone1,但我很想知道SSIS如何处理这种情况

7 个答案:

答案 0 :(得分:1)

您的转化应该会产生一个新变量,请勿使用Phone1。使用转换值的名称。

答案 1 :(得分:1)

根本原因 - 当源列的数据类型长度超过目标列的数据类型长度时,此警告消息将显示在SSIS数据流任务上。

解决方案 - 要从SSIS解决方案中删除此警告消息,请确保源列的数据类型长度应等于目标列的数据类型长度。

答案 2 :(得分:1)

  

警告:由于从数据流列插入数据而可能发生截断" Phone1"长度为50到数据库专栏"电话"长度为20。

解决方案:

要删除上述警告,您可以按照以下步骤操作:

1)右键单击源组件(例如:flat文件),然后单击show advance editor。

enter image description here

2)转到输入和输出属性。

3)点击平面文件源输出 - >输出栏 - >选择(PhoneNo)

4)您可以获取phoneno的属性窗口,单击Length属性并将值更改为20.单击确定。

enter image description here

我希望这可以帮到你。

答案 3 :(得分:0)

您可以更改脚本组件中“输出”列(Phone1)的大小,默认值为50,手动将其设置为20.

答案 4 :(得分:0)

这只是一个警告。无论如何,你的包都会执行。 这是因为源变量和目标变量的长度不同。 要解决此警告,请右键单击目标源,选择show advance editor选项,选择输入和输出属性选项卡,展开输入和输出变量并检查长度。如果它们不同,则使用数据转换操作使其相同。

答案 5 :(得分:0)

如果其他所有方法都失败,请尝试此操作。

我所经历的是,从同一数据流任务或另一个包的数据流任务复制并粘贴现有的Ole DB目标/源元素,然后开始更改详细信息后,偶尔会出现此错误内。

即使列的数据类型和长度相同,该警告仍然偶尔出现。这是我删除复制的元素并从头开始构建它们的时候。这使警告消失了。

我的猜测是元数据在复制/粘贴期间被弄污了。

答案 6 :(得分:0)

源varchar(50),目标varchar(20)

您知道错误迫在眉睫,并且可以忽略该错误

尝试下面的方法,看看是否对您有帮助

enter image description here