|
По материалам статьи Microsoft: How to
troubleshoot connectivity issues in SQL Server
2000 Эта статья ориентирована на то, чтобы помочь Вам решить
проблемы, возникающие при подключении к SQL Server 2000, в ней
описаны основные проблемы такого типа и действия, которые Вы
можете предпринять, чтобы их разрешить.
Введение SQL Server 2000 поддерживает несколько способов
взаимодействия экземпляра SQL Server и клиентского приложения.
Если экземпляр SQL Server и клиентское приложение установлены
на одном компьютере, то взаимодействие происходит посредством
имеющихся в Microsoft Windows механизмов InterProcess
Communication (IPC) (межпроцессное взаимодействие), таких как
локальные именованные каналы или протокол разделяемой памяти
(Shared Memory Protocol). Если же экземпляр SQL Server и
клиентское приложение работают на разных компьютерах, то
взаимодействие осуществляется через сетевые IPC, такие как
TCP/IP или именованные каналы. Поиск причин возникновения ошибок подключения Большинство проблем при подключении к SQL Server являются следствием проблем с TCP/IP, Windows аутентификацией, либо их комбинацией. ВАЖНО: Перед тем как начать поиск причины возникновения проблемы подключения к SQL Server, убедитесь, что служба MSSQLServer стартовала. Процесс преобразования IP адреса к текстовому имени экземпляра SQL Server происходит с помощью системы доменных имён (Domain Name System, DNS). Если эта служба отработала некорректно, экземпляр SQL Server может быть недоступен, и Вы можете получить следующие сообщения об ошибках: SQL Server does not exist or access denied General Network Error Cannot Generate SSPI Context Чтобы проверить корректность работы службы имён, необходимо
запустить утилиту командной строки ping, в качестве параметра
которой указать сначала IP адрес, а затем выполнить ту же
самую команду, но с именем сервера.
Убедитесь, что Вы получили правильное имя сервера. Если выполнение вышеприведенных команд завершилось неудачей, произошло превышение времени ожидания, или возвращенные значения не соответствуют тому результату, который Вы планировали получить, поиск в DNS осуществляется некорректно или же имеются проблемы с сетью или перенаправлением. Для того чтобы просмотреть текущие настройки DNS, выполните следующую команду: ipconfig /all Для получения дополнительной информации об ipconfig, необходимо изучить следующую статью в Базе знаний Майкрософт: 223413 Options for Ipconfig.exe in Windows 2000 (Параметры запуска ipconfig в Windows 2000) Для того чтобы иметь возможность обойти эту проблему, необходимо на клиентском компьютере добавить соответствие IP адреса и имени сервера в следующий файл: %systemroot%\system32\drivers\etc\hosts Также избежать этой проблемы помогает использование для подключения к серверу сетевой библиотеки именованных каналов. Также избежать этой проблемы помогает использование сетевой библиотеки именованных каналов для подключения к серверу. Проверка наличия протоколов и псевдонимов Проблемы подключения могут возникать вследствие неправильной настройки псевдонимов на клиенте. Чтобы это проверить, необходимо выполнить следующие шаги:
Можно протестировать подключение, используя разные конфигурации псевдонимов, построенных на имени сервера, его IP адресе или даже на других протоколах. Важно: В ранних версиях Microsoft Data Access Components (MDAC) используется другой пользовательский интерфейс утилиты Client Network Utility. Таким образом, если интерфейс Client Network Utility не содержит тех элементов, которые описаны выше, следует установить последнюю версию MDAC на компьютер, где выполняется клиентское приложение. Проверка порта прослушивания экземпляра SQL Server Проверьте что экземпляр SQL Server "слушает" порт TCP/IP, именованные каналы или другой протокол, который используется клиентским приложением. Для этого необходимо просмотреть текущий журнал ошибок SQL Server. Он может содержать следующие строки: 2003-11-06 09:49:36.17 server SQL server listening on
TCP, Shared Memory, Named Pipes. Анализ этой информации поможет убедиться в том, что SQL
Server имеет правильный IP - адрес и порт. По умолчанию,
выбирается порт 1433. Можно также использовать Server Network
Utility, чтобы проверить установки протоколов для SQL Server и
при необходимости изменить их, включая список протоколов
которые используются для подключения к SQL Server и порты,
которые эти протоколы используют. Для получения дополнительной
информации об утилите Server Network Utility, изучите
следующую статью справочной системы SQL Server Books Online:
"SQL Server Network Utility". 2001-11-14 15:49:14.12 server SuperSocket Info: Bind failed on TCP port 1433. Для получения дополнительной информации, изучите статью в базе знаний Майкрософт: 307197 PRB: TCP\IP port in use by another application (Порт TCP/IP используется другим приложением). Если Вы не можете подключиться к SQL server с использованием TCP/IP, попытайтесь сделать это, используя именованные каналы или разделяемую память. Запустите следующую команду для того, чтобы определить какие порты уже используются: NETSTAT -an Для получения более подробной информации о портах, которые уже используются, можно использовать команду Portqry. Для получения информации по утилите Portqry, изучите следующую статью из Базы знаний Майкрософт: 310099 Description of the Portqry.exe command-line utility (Описание утилиты командной строки Portqry) Для получения дополнительной информации о "баге", связанном с использованием сокетов TCP/IP, просмотрите следующую статью из Базы знаний Майкрософт: 306865 BUG: SQL Server may not listen on TCP/IP sockets When TCP/IP is the only protocol Обратите внимание: Для именованных экземпляров, SQL Server
определяет порт динамически. Таким образом, когда Вы стартуете
именованный экземпляр, SQL server пытается использовать порт,
который был использован им ранее. Если SQL Server не может
подключиться к этому порту, он выбирает себе другой порт для
подключения. В этом случае клиентское приложение должно быть
настроено таким образом, чтобы оно тоже определяло порт
динамически. Либо Вы можете жестко определить порт для
именованного экземпляра с помощью утилиты Client Network
Utility. Причиной возникновения проблем подключения к SQL server
также могут быть проблемы с MDAC. Например, при установке
каких-либо программ могут быть перезаписаны некоторые файлы
MDAC или могут измениться права, которые Вы должны иметь для
доступа к файлам MDAC. Для того чтобы проверить корректность
установки MDAC на компьютере, можно воспользоваться утилитой
MDAC Component Checker. Обратите внимание: если Вы подключаетесь к именованному экземпляру SQL Server, убедитесь что у Вас установлен MDAC версии не меньшей 2.6. Более ранние версии MDAC не поддерживают подключение к именованным экземплярам SQL Server. Для того чтобы проверить подключение через SQL Server ODBC
driver, можно воспользоваться утилитой Odbcping.exe Также можно провести тесты на предмет подключения к SQL Server используя файлы ".udl" Для получения информации о том, как создавать ".udl" файлы, читайте следующую статью из Базы знаний Майкрософт: 244659 SAMPLE: How to create a data link file with Windows 2000. Разрешение проблем связанных с использованием сетевых экранов Если используется сетевой экран, убедитесь в том что порты
для доступа клиентского компьютера к компьютеру, на котором
работает SQL Server, им не заблокированы. 287932
INF: TCP ports needed for communication to SQL Server through
a firewall (Порты TCP, необходимые для подключения к SQL
Server). Если для подключения к SQL Server используется протокол TCP/IP, убедитесь в том что Вы можете подключиться с помощью программы Telnet к порту на котором "слушает" SQL Server. Для этого из командной строки нужно выполнить следующее: Telnet <IP Address> <Port Number> Если при подключении Telnet-том выдается ошибка, примите меры к устранению причин её возникновения и попробуйте подключиться снова. Важно: User Datagram Protocol (UDP) порт 1434 может быть заблокирован для защиты от проникновения вируса Slammer. Разрешение проблем аутентификации и безопасности Подключение к SQL server может закончиться неудачей по причине того, что процесс аутентификации завершился с ошибкой, при этом Вы можете получить следующие сообщения об ошибках: Login failed for user '<username>' Login failed for user 'NTAUTHORITY\ANONYMOUS LOGON' Login failed for user 'null' Если Вы получили сообщение об ошибке, связанное с аутентификацией и учетная запись, указанная в этом сообщении не является учетной записью SQL Server, ищите причину в Windows аутентификации. Из-за проблем с аутентификацией в Windows, Вы можете получить следующее сообщение: Cannot generate SSPI Context Проблемы с аутентификацией и безопасностью могут быть вызваны следующими причинами:
Также для выявления возможных причин, нужно просмотреть
журнал событий компьютера. Для обхода проблем, возникающих
из-за подключения к SQL Server с использованием Windows
аутентификации, можно воспользоваться аутентификацией SQL
Server. При подключении с использованием SQL Server аутентификации, Вы можете получить следующую ошибку: Login failed for user '<username>' Для того, чтобы разрешить эту проблему, необходимо сделать следующее: Внимание: Неправильное использование редактора реестра может повлечь за собой серьезные проблемы, которые в конечном итоге могут привести к переустановке операционной системы. Помните, что Вы используйте редактор реестра на свой собственный страх и риск.
Если Вы при подключении к SQL Server используете
сертификаты, может быть получена ошибка для Secure Sockets
Layer (SSL). Получить дополнительную информацию по SSL можно в
следующих статьях: Разрешение проблем перегрузки TCP/IP сокетов При использовании ODBC драйвера для SQL Server или Microsoft OLE DB провайдера для SQL Server и System.Data.SqlClient Managed Provider, у Вас есть возможность с помощью соответствующего API отключить использование пула подключений. Если Вы его отключите, а Ваше приложение часто создаёт и закрывает подключения, может возрасти нагрузка на сетевые библиотеки нижнего уровня. Иногда Web - сервера и JDBC драйверы тоже могут пытаться установить соединение с SQL Server. Таким образом, увеличение количества запросов на подключение к SQL Server может стать больше, чем SQL Server может обслужить. Это увеличивает нагрузку на TCP/IP сокеты и Вы можете получить следующее сообщение об ошибке в журнале SQL server: 2003-08-07 20:46:21.11 server Error: 17832, Severity:
20, State: 6 Для получения дополнительной информации, прочитайте
следующие статьи: Важно: Эта проблема снимается при установке SQL Server 2000 SP3 или SQL Server 2000 SP3a, потому что эти сервисные пакеты вводят ограничение на количество пакетов. При подключении к SQL Server посредством драйверов сторонних производителей может возникнуть ошибка 17832. Для разрешения этой проблемы, свяжитесь с фирмой-производителем и получите драйвера, которые тестировались на работу с SQL Server 2000 SP3 и SQL Server 2000 SP3a. Убедитесь, что SQL Server не запущен в однопользовательском режиме Если SQL Server запущен в однопользовательском режиме, то с
ним может быть установлено только одно подключение. Если на
Вашем компьютере установлено программное обеспечение, которое
автоматически подключается к SQL Server, данное программное
обеспечение может использовать это единственное подключение,
которое допускается в однопользовательском режиме.
Клиентское приложение при попытке подключения к SQL Server получает следующую ошибку: SQL Server does not exist or Access Denied Эта ошибка возникает в процессе установки кластера SQL
Server и установки пакетов обновления, в то время как SQL
Server находится в однопользовательском режиме. Вышеуказанные
приложения могут автоматически подключатся к серверу,
используя единственное доступное подключение, и процесс
установки закончится с ошибкой. To determine if the instance of SQL Server has been
started in single-user mode, check to see if the SQL Server
error log file has an entry that is similar to
following: Проверка подключения к SQL Server по именованным каналам Если Вы не можете подключиться к SQL Server по именованным каналам, проверьте для SQL Server настройку использования именованных каналов. Для получения дополнительной информации о том, как протестировать соединение через именованные каналы, прочитайте следующую статью: 68941 INF: Procedure for testing named pipes. Разрешение проблем подключения во время процесса регенерации Каждый раз при старте SQL Server запускает процесс восстановления/регенерации для всех баз данных. Суть этого процесса заключается в том, чтобы откатить незавершенные транзакции и записать изменения произведенные транзакциями, которые были завершены, но которые не были записаны на диск в момент останова SQL Server. После окончания процесса реорганизации в журнале SQL Server делается следующая запись: Recovery Complete В момент выполнения процесса реорганизации к SQL server нельзя подключиться. Клиенты, которые в это время пытаются установить соединение с SQL Server могут получить подобную представленной ниже ошибку: Timeout Expired Служба SQL Server Agent не запускается до тех пор, пока SQL Server не закончит процесс регенерации. Таким образом, если процесс регенерации занимает слишком много времени, следует подумать над тем, как разрешить проблему столь длительной регенерации баз данных. Тестирование разных способов подключения к экземпляру SQL Server Если у Вас возникают проблемы при подключении к SQL Server, можно воспользоваться одним из следующих способов, чтобы определить причину возникновения этой проблемы:
Если проблема подключения не разрешилась с помощью методов,
описанных в разделе "Тестирование разных способов подключения
к экземпляру SQL Server", используйте утилиту Network Monitor
для анализа трассы сетевого обмена. 148942
How to capture network traffic with Network Monitor (Запись
сетевого трафика с помощью сетевого монитора) Для получения более детальной информации можно использовать SQL Profiler, а также Network Diagnostics Tool, если компьютер, на котором работает SQL Server, не является одним из узлов кластера. Для получения информации о том, как использовать Network Diagnostics Tool, изучите следующую статью: 321708 HOW TO: Use the Network Diagnostics Tool (Netdiag.exe) in Windows 2000 (Использование Network Diagnostics Tool (Netdiag.exe) в Windows 2000) Для изучения проблем связанных с подключением к SQL Server, предлагаются следующие статьи из Базы Знаний Майкрософт: 812817
Support WebCast: Microsoft SQL Server 2000: Troubleshooting
connectivity Информация в статье применима к Microsoft SQL Server 2000 Standard Edition.
|