[英]Execute SQL task (SSIS) and then insert the result set into a table on a different server
[英]SSIS 2012 truncates result set of Execute SQL task
對此進行了高低搜尋,發現了很多建議,但對我沒有任何幫助。 我們有一個帶有字段的表,該字段在文本類型列中存儲SQL查詢,該查詢隨后被其他對象調用,因此需要轉義某些字符。
我構建了一段SQL代碼來完成這一工作。 問題是,當放入Execute SQL任務並將結果分配給String變量時,文本會在看似隨機的地方被截斷,例如。 最近的嘗試將4184個字符截斷為4058個字符。
我知道nvarchar在SSIS中限制為4000個字符。 一種建議是使用nvarchar(max)源數據類型和Object變量類型。 失敗並顯示此錯誤:
“將結果提取到類型為(DBTYPE_WSTR)的變量中時發生錯誤”。
另一個是在源查詢中使用ntext。 失敗並顯示此錯誤:
“ text,ntext和image數據類型對於局部變量無效。”
我想念什么嗎? 將長字符串放入Execute SQL結果集變量的正確方法是什么?
這是獲取SQL命令的原始代碼,該代碼有效但會被截斷。 Put在ID周圍加上一個轉義的單引號。 (這些特定的ID為varchar,因為它們可以包含字母。)
DECLARE @IDList VARCHAR(8000)
SELECT @IDList = COALESCE(@IDList + ', ', '') + '''''' + PersonID + ''''''
FROM tmpGroup
select '''SELECT SystemID
FROM People
WHERE PersonID IN (' + @IDList + ')''' AS GroupSQL
請注意,它使用VARCHAR(8000),因為這是唯一起作用的源數據類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.