Ошибка пакетов служб SSIS на серверах SQL Server, настроенных для использования шифрования и размера сетевых пакетов
Эта статья поможет устранить проблему, которая возникает при настройке SQL Server использования зашифрованных подключений и параметра размера сетевого пакета.
Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 2006769
Симптомы
Рассмотрим следующий сценарий для SQL Server сред:
Вы настраиваете SQL Server, чтобы использовать параметр Включить зашифрованные подключения к ядру СУБД для подключений.
На сервере SQL server используется параметр размера сетевого пакета , который больше значения по умолчанию (4 КБ).
В этом сценарии вы заметите следующее:
Попытка сохранить пакеты служб SSIS в хранилище пакетов MSDB завершится ошибкой со следующим сообщением об ошибке:
Метод SaveToSQLServer обнаружил код ошибки OLE DB 0x80004005 (сбой канала связи). Сбой выданной инструкции SQL.
Примечание.
При сохранении планов обслуживания, созданных в SQL Server Management Studio в виде пакетов SSIS, в базах данных MSDB также возникает сообщение об ошибке, так как эта операция по своей сути использует шифрование для подключений к SQL Server.
Функция сборщика данных в SQL Server, использующая службы SSIS, сталкивается с различными проблемами, как указано ниже.
- Задание набора сбора данных сообщает о следующих ошибках в журнале заданий:
dcexec: Ошибка: внутренняя ошибка при главном (причина: система не может найти указанный файл).
dcexec: Ошибка: внутренняя ошибка в main (причина: дескриптор недопустим).- При запуске набора сбора данных непосредственно из data может возникнуть следующее сообщение об ошибке:
Сбой пакета "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection".
Если просмотреть журналы сборщика данных, появится сообщение об ошибке, примерно следующее:
Ошибка служб SSIS. Имя компонента: TaskForCollectionItem_1, код: -1073602332, вложенный компонент: (null), описание: ошибка 0xC0014062 при подготовке к загрузке пакета. Метод LoadFromSQLServer обнаружил код ошибки OLE DB 0x80004005 (сбой канала связи). Сбой выданной инструкции SQL.
Проблема может возникнуть с любой операцией, в которой используются методы Метода Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) или Метода Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) при выполнении обоих условий (шифрование и большой размер пакета), описанных в этом разделе.
Причина
Протокол SSL и его замена, транспортный уровень безопасности (TLS), ограничивает размер фрагментов данных до 16 кб (16384). Это описано в общедоступном документе RFC 2246 (раздел 6.2.2), а текущая реализация сетевых протоколов и уровня конечных точек TDS соответствует этой спецификации. Поэтому при использовании размера сетевого пакета, превышающего 16 кб в средах, где шифрование включено на SQL Server, вы будете столкнуться с ошибками, рассмотренными в разделе "Симптомы".
Разрешение
Чтобы устранить эту проблему, укажите размер сетевого пакета, который меньше или равен 16 384 байтам. Чтобы задать параметр конфигурации network packet size
системной хранимой sp_configure
процедуры, можно использовать следующий код:
Примечание.
Если параметр MARS включен, поставщик SMUX добавляет 16-байтовый заголовок в пакет перед шифрованием SSL, уменьшая максимальный размер сетевого пакета до 16368 байт.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
Размер сетевого пакета также можно изменить на странице Свойства сервера в обозреватель объектов. Выберите параметр Дополнительно , введите новое значение для параметра Размер сетевого пакета и нажмите кнопку ОК.
Примечание.
Чтобы изменение вступило в силу, перезапускать SQL Server не нужно. После изменения этого параметра все новые подключения получают новое значение.
Дополнительная информация
Действия по воспроизведению
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Убедитесь, что установлен сборщик данных.
Задайте для параметра Размер сетевого пакета значение больше 16 КБ.
Щелкните правой кнопкой мыши Сбор данных в обозреватель объектов (OE) и Отключить сбор данных.
Щелкните правой кнопкой мыши сбор данных в OE и выберите Включить сбор данных.
Щелкните правой кнопкой мыши действие сервера в наборах коллекций и выберите Начать набор сбора данных.
Чтобы получить ошибку, щелкните правой кнопкой мыши действие сервера и выберите Собрать и отправить сейчас. (В журналах контроллера домена подробно отображается ошибка).