2013-07-19 67 views
0

需要帮助的人。我正在尝试使用以下查询来获取表中的数据。它在SSMS中工作,但在SSIS中引发错误。查询适用于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

什么数据类型(大小)目的列? – christiandev

+0

长度为20的字符串[DT_STR]。 – Akshay

+0

任何记录的长度是否大于20? – christiandev

回答

1

您看到的错误是由于数据不兼容而发生的。

在第一CONVERT(VARCHAR(10)您指定的长度10

MSDN说,该默认VARCHAR大小为30,这样一个CAST(x AS VARCHAR)等于CAST(x AS VARCHAR(30))。 所以在这里我们有30

长度最后,你有一列,其长度为20,在这里,我们有一个“数据的潜在损失”

+0

太棒了!! ......实际上是这个问题。只是刷新它,不会再给出错误。 – Akshay

相关问题