簡體   English   中英

SSIS-傳遞給存儲過程的變量被截斷/轉換

[英]SSIS - Variable truncated/converted when passed to stored procedure

我正在研究一個SSIS包,該包從CSV文件(其中有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個字符的字符串。

基於某種搜索,這使我認為在將數據從變量傳遞給Execute SQL Task並進行調用之間發生了某種類型轉換。

此鏈接表明任務有時會投射數據:

https://social.msdn.microsoft.com/forums/sqlserver/zh-CN/eadaee01-33b0-47f3-8702-34a40d2fe333/debug-execute-sql-task-what-parameter-value-is-passed

我排除了類型/長度的廢話,並觀察了變量確認。 我也嘗試過強制聲明本身,但無濟於事。

誰能確認我的假設和/或提供解決方案?

它可能在以下情況下發生:

檢查您的源平面文件是否為UNICODE文件,以及

將您的目標列設置為nvarchar(max)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM