狀況
當您執行 Microsoft SQL Server 整合服務 (SSIS) 封裝時,請執行失敗,因為參數型別轉換錯誤,,並且您收到下列錯誤訊息︰
程式碼︰ 0xC0202009
資料流程工作來源︰
描述︰ SSIS 錯誤碼 DTS_E_OLEDBERROR。OLE DB 錯誤。錯誤碼︰ 0x80040E21。
使用 OLE DB 資料錄。 來源: 「 Microsoft SQL Server 原生用戶端 11.0 」
Hresult: 0x80040E21 說明: 「 陣容規格的無效的字元值 」。
OLE DB 來源元件,當您有資料的資料流程工作,其中包含參數型的查詢,您可能會遇到這個問題。例如,您有下列查詢︰SELECT mydate FROM dbo.myTable
WHERE mydate >= convert (char, dateadd(year,-1,cast( ? as datetime)))
注意如果您嘗試使用查詢字串中的 OLE DB 來源元件加上參數,才會發生這個問題。參數標記"?"被對應到 SSIS 使用者變數參數 1定義為 SSIS 字串"20080122"。發生這個問題,Microsoft SQL Server 2005年或更新版本中移轉的封裝。
原因
之所以發生這個問題,是因為 OLE DB 如何處理參數的行為變更。在 Microsoft SQL Server 2012,新的預存程序的sp_describe_undeclared_parameters, fmtonly 器集合工具的取代會傳回不同的結果,對於參數型別。這項變更是經過設計的。
在範例查詢中 < 徵狀=""> 一節中,原始的行為,是描述"?"是"char(8)"。不過,新的