徵狀
請試想下列案例:
-
您使用 Microsoft SQL Server 2012 或 SQL Server 2014 及 Microsoft SQL Server Data Tools (SSDT)來設計 SQL Server Integration Services (SSIS)套件。
-
在 [資料流程] 工作中,您可以使用 [OLE DB 來源]、[ADO.NET 來源] 或 [ODBC 來源] 等來源元件,將 資料存取模式 設定為 [SQL] 命令 ,然後在 [命令] 方塊中輸入查詢。
-
按一下 [ 預覽 ] 以查看查詢的結果。
在這種情況下,預覽的命令執行時間超過30秒,且在設計工具中失敗。 此外,您會收到「查詢超時已過期」之類的錯誤。
原因
發生這個問題的原因是,在 SSIS 設計工具中,預覽功能的 CommandTimeout 閾值被硬編碼為30秒。
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2014 累積更新3 /en-us/help/2984923
SQL Server 2012 SP2 累積更新1 /en-us/help/2976982
SQL Server 2012 SP1 累計更新10 /en-us/help/2954099
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
附注:
-
在您套用此熱修復程式前,在資料預覽中,[超時設定] 是針對所有 SSIS 元件修正為30秒。
-
套用此熱修復程式後:
-
針對 ADO.NET 來源元件和 OLE DB 源元件,它們已經擁有屬性 CommandTimeout。 這個屬性將用於 [資料預覽]。
-
對於具有 [資料預覽] 功能但沒有 CommandTimeout 屬性的所有其他元件:
-
如果系統登錄機碼下有 DWORD 值 DataPreviewTimeout :\\HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SSIS\Preferences 在預覽期間,SSI 會使用這個值做為超時。
-
如果沒有 DWORD 值 DataPreviewTimeout,ssi 仍會使用30秒。
-
-
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。