簡體   English   中英

SSIS 2012截斷執行SQL任務的結果集

[英]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),因為這是唯一起作用的源數據類型。

我修復了以下類似問題:

  1. 在“執行SQL任務”中-設置ResultSet =完整結果集,並將對象變量(VObj)分配為結果集。
  2. 完成此任務后-創建Foreach ADO枚舉器並將Vobj作為源變量處理( 請參閱完整的入門文章 ),將第一個變量分配給一些String變量。

描述的方法允許將長(超過8K個符號)字符串從SQL傳輸到SSIS String變量中。

暫無
暫無

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

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