需要帮助的人。我试图使用以下查询从表中获取数据。它适用于SSMS,但在SSIS中会抛出错误。
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS col1
UNION ALL
SELECT CAST (CustomerID AS VARCHAR)
FROM tCustomer
UNION ALL
SELECT CAST(COUNT(*) AS VARCHAR) AS col1
FROM tCustomer
抛出错误
[OLE DB Source [1]] Error: There was an error with output column "col1" (35) on output "OLE DB Source Output" (11). The column status returned was: "The value could not be converted because of a potential loss of data.".
我想要实现的是
Header line yyyy-mm-dd
--e.g. 2013-07-01
Data records
Trailer record
---e.g. 13480
我哪里错了?
答案 0 :(得分:1)
您看到的错误是由于数据不兼容而发生的。
在第一个CONVERT(VARCHAR(10)
中,您将长度指定为10
MSDN说,默认varchar大小为30,因此CAST(x AS VARCHAR)
等于CAST(x AS VARCHAR(30))
。
所以这里的长度为30
最后你有一个列,长度为20
,这里我们有“潜在的数据丢失”