Устранение неполадок протокола во время запуска ядра СУБД

Когда во время запуска SQL Server Database Engine встречает ошибку протокола, в журнал ошибок SQL Server и в журнал событий Windows записывается сообщение об ошибке в следующей форме:

"Ошибка: 17182, уровень серьезности: 16, состояние: 1."

"Инициализация TDSSNIClient закончилась с ошибкой <x>, код состояния <y>".

В этом сообщении <x> является кодом базовой ошибки, возвращаемым подсистемой связи или безопасности, а <y> является состоянием внутренней ошибки протокола сервера SQL Server.

ПримечаниеПримечание

Протокол общей памяти и протокол именованных каналов имеют некоторые общие аспекты их реализации. Ошибка одного из протоколов может также вызвать ошибку и другого. Если указанный в этом сообщении об ошибке протокол отключается, но ошибка не исчезает, попытайтесь перезапуститься, отключив как общую память, так и именованные каналы.

Интерпретация кода ошибки

Код базовой ошибки, <x>, обычно является кодом ошибки, возвращаемым сетевым уровнем Windows или вызовом интерфейса службы поддержки безопасности (SSPI). Для кодов ошибки сети Windows выполнение команды net helpmsg может помочь в интерпретации кода. Коды ошибки SSPI нелегко расшифровать. Возможно, потребуется воспользоваться базой знаний Майкрософт или, если установлен пакет SDK операционной системы, проверить файл WinError.h.

Интерпретация кода состояния ошибки протокола

В следующей таблице представлены состояния ошибки протокола сервера SQL Server. Заметьте, что большая часть состояний ошибки соответствует внутренним ошибкам, но определенные значения этих ошибок дают возможность определить область протокола, в которой произошла ошибка. Например, если это значение лежит в диапазоне от 7 до 30 (от 0x0A до 0x1E), источником ошибки является механизм обработки TCP/IP. Коды состояния в сообщении об ошибке представляются в шестнадцатеричном формате. В следующей таблице для большей ясности представлены десятичные эквиваленты этих кодов.

Диапазон кода состояния в шестнадцатеричном формате

Диапазон кода состояния в шестнадцатеричном формате

Область протокола

0x03

3

Общая память

0x07-0x1E

7-30

TCP/IP

0x1F-0x23

31-35

Выделенное административное соединение (DAC)

0x35

53

Именованные каналы

0x36

54

Адаптер виртуального интерфейса (VIA)

0x38

56

Протокол SSL

0x40-0x4F

64-79

Общая память

0x50-0x5F

80-95

Именованные каналы

0x60-0x6F

96-111

VIA

0x70-0x7F

112-127

HTTP

0x80-0x8F

128-143

SSL

0x90-0x9F

144-159

Общая ошибка

В следующей таблице представлены некоторые коды общих ошибок.

Код состояния

Описание

0x03

Ошибка начала поддержки общей памяти

0x04

Все протоколы отключены

0x0A

Невозможно инициализировать средство прослушивания TCP/IP

0x1C

Сервер настроен на прослушивание по определенному адресу IP в кластеризованной среде

0x1E

В сети обнаружен дубликат адреса IP

0x35

Ошибка начала поддержки именованного канала

0x36

Ошибка начала поддержки протокола VIA

0x38

Ошибка получения или использования сертификата для протокола SSL

0x3A

Невозможно инициировать средства прослушивания связи

0x40

Невозможно инициировать средство прослушивания общей памяти

0x50

Невозможно инициировать средство прослушивания именованных каналов

0x60

Невозможно инициировать средство прослушивания протокола VIA

0x70

Невозможно инициировать средство прослушивания протокола HTTP

0x80

Невозможно инициировать поддержку протокола SSL

Примеры

Далее приводится пример типичной ошибки, возникающей во время запуска: «При инициализации TDSSNIClient произошла ошибка 0x80092004, код состояния 0x38».

Значение 0x80092004 является кодом ошибки SSPI, который преобразуется в CRYPT_E_NOT_FOUND. 0x38 является кодом внутренней ошибки, указывающим на то, что на уровне связи сервера SQL Server не могло быть инициировано средство прослушивания. Эта ошибка была сформирована протоколом SSL, так как он не смог найти сертификат.

Ошибки, возвращаемые при отключении всех протоколов

Если отключены все протоколы, могут быть получены следующие ошибки:

  • "Ошибка: 17182, уровень серьезности: 16, состояние: 1."

    «При инициации TDSSNIClient произошла ошибка 0xd, код состояния 0x4».

  • "Ошибка: 17182, уровень серьезности: 16, состояние: 1."

    «При инициации TDSSNIClient произошла ошибка 0xd, код состояния 0x1».

  • "Ошибка: 17826, уровень серьезности: 18, состояние: 3."

    «Не удалось запустить сетевую библиотеку из-за внутренней ошибки в сетевой библиотеке. Для определения причины проанализируйте ошибки, непосредственно предшествующие этой ошибке в журнале ошибок».

  • "Ошибка: 17120, уровень серьезности: 16, состояние: 1."

    «Серверу SQL Server не удалось создать поток FRunCM. В журнале ошибок сервера SQL Server и в журналах ошибок Windows найдите сведения о возможных проблемах, связанных с этой ошибкой».