症状
请考虑以下情形:
- 您使用 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 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
注意:
在应用此修补程序之前,所有 SSIS 组件的数据预览中的超时设置固定为 30 秒。
应用此修补程序后:
对于 ADO.NET 源组件和 OLE DB 源组件,它们已经具有属性 CommandTimeout。 此属性将用于数据预览。
对于具有数据预览功能但没有 CommandTimeout 属性的所有其他组件:
- 如果系统注册表项:\\HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SSIS\Preferences 下有 DWORD 值 DataPreviewTimeout,SSIS 将在预览期间将该值用作超时。
- 如果没有 DWORD 值 DataPreviewTimeout,SSIS 仍使用 30 秒。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。