我正在处理从CSV文件获取数据的SSIS包,其中有1列,每行的数据作为参数传递给存储过程。每行是9个数字和1个字母(即10个字符串)。
包的结构如下:
For loop that iterates over files in a given directory.
Data Flow ( Flat File Source getting CSV file -> Recordset Destination )
-> For loop that iterates over each record.
Execute SQL Task calls stored procedure with the value from each record as a parameter.
问题:
基于存储过程中的调试代码,这是传递的内容:
Actual data: 111111111X, 222222222Y, 333333333Z.
What's received: 1, 2, 3.
我添加了一些断点并观察了用于存储字符串的变量,我可以看到它在每次迭代期间的值是正确的,即在存储过程调用之前和之后的完整10-char字符串。
基于一些谷歌搜索,这使我认为在数据从变量传递到执行SQL任务和调用之间发生了一些类型转换。
此链接表示任务有时会投放数据:
我排除了类型/长度的废话并且观察到的变量确认了。我也尝试在声明中投票,但没有用。
任何人都可以确认我的假设和/或提供解决方案吗?
答案 0 :(得分:0)
在以下情况下可能会发生:
检查源平面文件是否为UNICODE文件 和
设置目标列定义为nvarchar(max)。