gpt4 book ai didi

sql-server-2005 - 为什么我的 CASTS 在 SSIS 中似乎被忽略了?

转载 作者:行者123 更新时间:2023-12-04 16:37:48 25 4
gpt4 key购买 nike

我用的是 数据流任务在 SSIS 中将数据从一台服务器 (SQL Server 2005) 获取到另一台 (SQL Server 2008 R2)。在 OLE DB 源 连接 我使用 SQL 命令来获取数据。在这个命令中,我已经将内容转换为某种数据类型:

SELECT
CAST(column1 AS VARCHAR(10)) AS NameColumn1
,CAST(column2 AS INT) AS NameColumn2
,CAST(REPLACE(REPLACE(REPLACE(REPLACE(column3, CHAR(10), ''), CHAR(13), ''), CHAR(9), ''), ';', '-') AS VARCHAR(100)) AS NameColumn3
,CAST(REPLACE(REPLACE(REPLACE(REPLACE(column4, CHAR(10), ''), CHAR(13), ''), CHAR(9), ''), ';', '-') AS VARCHAR(255)) AS NameColumn4
...
FROM (etc.)

(请注意,转换是转换为源数据库中列值的原始数据类型。因此 column1 的数据类型最初是 VARCHAR(10) , column4 的数据类型最初是 VARCHAR(255) 等等。)

使用这些强制转换是因为在包中我收到以下警告 column3column4 :

Validation warning. [...] Truncation may occur due to inserting data from data flow column "column4" with a length of 8000 to database column "column4" with a length of 255.



似乎强制转换不起作用,因为 column3 和 column4 的截断警告不断出现。 (我已经将 OLE DB Source 中的截断警告设置为忽略失败,但这似乎没有什么区别。)

我在网上找不到任何内容,暂时将通过将列导入为 VARCHAR(8000) 来“解决”此问题。 .但我很想知道 SSIS 中这种行为的原因是什么。有人有线索吗?

最佳答案

进入源组件的高级属性并验证第 3 和第 4 列的大小(在输入和输出属性中)。如果它们已经被计算为 varchar(8000) 那么你将不得不手动更改它们。

或者,删除该组件并从一开始就添加一个带有 Select/Cast 的新组件 - 这应该正确分配正确的字段长度。

关于sql-server-2005 - 为什么我的 CASTS 在 SSIS 中似乎被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com