Sql-Server-2012

SSIS ODBC:將結果集列映射到變數返回錯誤“值不在預期範圍內”

  • April 10, 2018

在 SSIS 2012 中,我使用“執行 SQL 任務”來呼叫儲存過程,該過程返回包含兩列的單行。我想將該結果集映射到兩個 SSIS 使用者變數。應該很容易吧?這在我使用 ADO.NET 或 OLEDB 連接管理器時有效,但在我使用 ODBC 連接管理器時失敗。

當我使用 ODBC 進行映射時,SSIS 返回以下執行時異常:

[Execute SQL Task] Error: An error occurred while assigning a value to variable "MyString": "Value does not fall within the expected range."

SQL Server 列的數據類型為 nvarchar(50)。我也試過 varchar(50) 和 char(1) 無濟於事。SSIS 變數“MyString”的數據類型為 String。

SSIS 中的結果集映射 .

ODBC 連接的程式碼頁是1252,SQL Server 2012 排序規則是SQL_Latin1_General_CP1_CI_AS.

我正在使用 SQL Server 2012 數據庫。

以下是任務的一般設置以供參考:

SSIS 執行 SQL 任務 - 正常選項卡 .

這可以使用 ODBC 連接嗎?或者這是 SSIS 2012 中 ODBC 不支持的另一種類型的功能?

使用 SQL 任務中的 ODBC,第一個位置是 1 而不是 0,這完全解決了我的問題。另請注意,ODBC 似乎無法辨識別名,因此不要將別名用作 resultName。似乎消息“預期範圍”是指結果集定位;即 ‘0’ 或變數位置範圍內未看到名稱(如 1 和 2 如果您選擇了兩個,則 0 或 3 超出範圍)

是的,您可以使用 ODBC 連接來執行此操作。但是,在使用 ODBC 時,您無法靈活地命名結果集。嘗試將結果名稱“MyNVarchar1”更改為數字“0”並將“MyNVarchar2”更改為數字“1”。ODBC 希望將這些列引用為 0、1、2 等。

引用自:https://dba.stackexchange.com/questions/129106