Устранение неполадок протокола во время запуска ядра СУБД
Когда во время запуска 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 найдите сведения о возможных проблемах, связанных с этой ошибкой».