Проблема
Рассмотрим следующий сценарий.
- Для разработки пакета служб интеграции SQL Server (SSIS) используется Microsoft SQL Server 2012 или SQL Server 2014 и Microsoft SQL Server Data Tools (SSDT).
- В задаче потока данных используется компонент-источник, например источник OLE DB, источник ADO.NET или источник ODBC, чтобы задать режим доступа к данным "Команда SQL" и ввести запрос в командное поле.
- Чтобы увидеть результат запроса, нажмите кнопку "Просмотр".
В этом случае предварительная команда выполняется дольше 30 секунд и завершается сбоем в конструкторе. Кроме того, появляется сообщение об ошибке, похожее на "Срок ожидания запроса истек".
Причина
Проблема возникает из-за того, что пороговое значение CommandTimeout жестко запрограммировано равным 30 секундам для предварительной версии функции в конструкторе служб SSIS.
Решение
Эта проблема была впервые исправлена в следующем накопительном пакете обновления SQL Server.
Накопительный пакет обновления 3 для SQL Server 2014 г. /en-us/help/2984923
Накопительный пакет обновления 1 для SQL Server 2012 с пакетом обновления 2 (SP2) /en-us/help/2976982
Накопительный пакет обновления 10 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2954099
Сведения о накопительных обновлениях для SQL Server
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
- Последний накопительный пакет обновления для SQL Server 2014
- Последний накопительный пакет обновления для SQL Server 2012 с пакетом обновления 2 (SP2)
- Последний накопительный пакет обновления для SQL Server 2012 с пакетом обновления 1 (SP1)
Примечания.
Перед применением этого исправления для параметра времени ожидания будет установлено значение 30 секунд в предварительном просмотре данных для всех компонентов служб SSIS.
После применения этого исправления:
Для исходного компонента ADO.NET и исходного компонента OLE DB у них уже есть свойство CommandTimeout. Это свойство будет использоваться при предварительном просмотре данных.
Для всех остальных компонентов, которые имеют возможность просмотра данных, но не имеют свойства CommandTimeout:
- Если в разделе системного реестра указано значение DWORD DataPreviewTimeout:\\HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SSIS\Preferences, служба SSIS будет использовать это значение в качестве времени ожидания во время предварительного просмотра.
- Если значение DWORD (DataPreviewTimeout) отсутствует, служба SSIS по-прежнему использует 30 секунд.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».