症状
请考虑以下情况:
-
使用 Microsoft SQL Server 2012 或 SQL Server 2014 和 Microsoft SQL Server 数据工具(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 属性的所有其他组件:
-
如果在 system 注册表项下有一个 DWORD 值 DataPreviewTimeout :\\HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SSIS\Preferences 在预览期间,SSIS 会将该值用作超时。
-
如果没有 DWORD 值 DataPreviewTimeout,则 SSIS 仍将使用30秒。
-
-
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。