Поделиться через


Согласованные проблемы с сетевым подключением SQL Server

Примечание.

Прежде чем приступить к устранению неполадок, рекомендуется проверить предварительные требования и ознакомиться с контрольным списком.

В этой статье показано, как устранить ошибки подключения к сети в SQL Server. Эти ошибки согласованы и повторяются каждый раз. Они указывают на некоторые проблемы конфигурации, такие как SQL Server, не включающие TCP или брандмауэр, блокирующие подключение. Устранение неполадок сосредоточено на удаленных TCP-подключениях, так как это наиболее распространенный тип подключения в большинстве центров обработки данных, но многие методы также могут применяться к именованным каналам.

Стандартные сообщения об ошибках

Наиболее распространенные сообщения об ошибках:

  • Сбой связи.

  • Общая ошибка сети.

  • Указанное сетевое имя недоступно.

  • SQL Server не существует или запрещен доступ. (Это также может быть ошибка проверки подлинности)

  • При подключении к SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Проверьте правильность имени экземпляра и настройку сервера SQL Server для удаленных подключений.

  • Ошибка поиска сервера или экземпляра, указанного.

  • Не удалось открыть подключение к SQL Server Microsoft SQL Server, ошибка:53. Сетевой путь не найден".

  • Подключение не может быть сделано, так как целевой компьютер активно отказался от него.

Сузьте область проблемы до области фокуса

Следующие действия помогут сузить устранение неполадок в области фокуса.

  • Клиент: приложение, строка подключения, драйвер (отсутствует протокол TLS) 1.2), псевдоним SQL (64/32-разрядная версия), файл узлов и неправильный суффикс системы доменных имен (DNS) (полное имя подключается; короткое имя завершается сбоем).
  • SQL Server: ядро СУБД, включенные протоколы и брандмауэр.
  • Сеть: псевдоним DNS, шлюз, маршрутизатор и брандмауэр.

1. Можно ли подключиться к SQL Server локально с помощью SQL Server Management Studio (SSMS) и TCP?

Например, используйте строка подключения в этом формате: tcp:<ServerName>.<DomainName>.COM,1433напримерtcp:sqlprod01.contoso.com,1433.

Примечание.

tcp добавлен до имени сервера должен быть строчным регистром.

Если да, SQL Server работает хорошо. Проблема связана с брандмауэром, сетью или клиентом.

В противном случае проблема связана со службой SQL Server.

2. Можно ли подключиться к порту SQL Server с клиентского компьютера с помощью telnet?

Например, команда для установления подключения telnet к экземпляру telnet <ServerName>.<DomainName>.COM 1433SQL Server.

Если да, проблема связана с драйверами, поставщиками, уровнем безопасности и безопасным сокетами (SSL), псевдонимами SQL или приложениями.

В противном случае проблема связана с файлом узлов, сетью или брандмауэром при выполнении шага 1.

  • Если telnet команда недоступна, добавьте ее как функцию Windows. Для этого не требуется перезагрузка.

  • Более новые версии Windows имеют команду Test-NetConnection PowerShell.

    Например, используйте команду Test-NetConnection <ServerName>.<DomainName>.com -Port 1433 для проверки сетевого подключения к экземпляру SQL Server.

3. Можно ли подключиться к серверу с помощью UDL-файла, если работает шаг 2?

Если да, проблема связана с приложениями, такими как неправильный строка подключения, или поставщик, используемый приложением, если отличается от поставщика, используемого в файле универсального канала данных (UDL).

В противном случае проблема связана с клиентами.

4. Могут ли другие клиенты подключаться к SQL Server?

Если да, проблема связана с брандмауэром, сетью, TLS 1.2 или клиентом.

В противном случае проблема связана с брандмауэром или сервером.

5. Может ли клиент подключиться к другим серверам?

Если да, проблема связана с брандмауэром, сетью, TLS 1.2 или сервером.

В противном случае проблема, связанная с брандмауэром, сетью или TLS 1.2.

Служба SQL Server

Если проблема связана со службой SQL Server, выполните следующие действия.

  1. Проверка процесса службы (sqlserver.exe) выполняется в диспетчере задач. (Или проверьте с помощью диспетчер конфигурации SQL Server или services.msc, если установлено несколько экземпляров.)

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

  2. Проверьте, указывает ли журнал событий приложения, журналы кластера или файл SQL Server ERRORLOG указывает на неустранимую ошибку.

  3. Убедитесь, что ожидаемые протоколы включены в диспетчер конфигурации SQL Server и в файле SQL Server ERRORLOG (см. следующий пример).

    Если нет, включите их и перезапустите SQL Server. Протокол TCP всегда должен быть включен, если разрешены удаленные подключения.

    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv6> 1433].
    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv4> 1433].
    2013-11-20 09:42:03.94 Server Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\KJ].
    2013-11-20 09:42:03.94 Server Server named pipe provider is ready to accept connection on [ \\.\pipe\MSSQL$KJ\sql\query].
    
  4. В подключении администратора источника данных SSMS, UDL или ODBC обходят браузер SQL Server, указав имя сервера в формате: tcp:<ServerName>.<DomainName>.com,1433

    Примечание.

    Использование полного доменного имени (FQDN), tcp:а номер порта для создания подключения — это самый надежный и устойчивый метод. tcp: должен быть строчным регистром.

    • Если подключение выполнено успешно:

      • Проверка запущенного браузера SQL Server. Если SQL Server — это экземпляр по умолчанию, прослушивающий порт 1433, он не должен работать. Номер порта можно удалить и по-прежнему работать.
      • Если удаление tcp: префикса приводит к сбою, по умолчанию вы можете подключиться через именованные каналы. Вы можете проверить, используя np:hostname\<ServerName> имя сервера.
      • Если использование имени NetBIOS завершается ошибкой, возможно, у вас есть псевдоним SQL, который переопределяет имя NetBIOS или неправильный DNS-суффикс в конфигурации сети. Кроме того, проверьте 32-разрядные псевдонимы.
    • Если SSMS не удается подключиться, попробуйте подключиться к UDL-файлу или через администратора источника данных ODBC.

      • Попробуйте использовать IP-адрес сервера вместо имени узла. Вы даже можете попробовать использовать 127.0.0.1, если сервер не кластеризован и прослушивает "любой".
      • Попробуйте использовать разные драйверы. Более новые драйверы поддерживают TLS 1.2 и предоставляют лучшие сообщения об ошибках.
      • Попробуйте использовать различные протоколы: tcp:<ServerName>.<DomainName>.com,1433, np:<ServerName>.<DomainName>.com\<InstanceName>или lpc:<ServerName>.<DomainName>.com\<InstanceName>. Используйте диспетчер конфигурации SQL Server для внесения изменений. Затем перезапустите SQL Server и используйте файл ERORLOG для подтверждения изменений.
      • Обновлено ли SQL Server (2014 или более раннее) для поддержки TLS 1.2? Обновлен ли клиент для поддержки TLS 1.2? Включены ли эти протоколы?
      • Проверьте псевдоним SQL в диспетчер конфигурации SQL Server или cliconfg.exe на всех компьютерах Windows. Проверьте 64-разрядные и 32-разрядные псевдонимы.
      • Проверьте файл ERRORLOG для сообщений об ошибках, таких как база данных недоступна или в восстановлении.
      • Проверьте выходные данные, чтобы проверить, NETSTAT владеет ли SQL Server ожидаемым портом. Например, запустите NETSTAT -abon > c:\temp\ports.txt из командной строки с разрешениями администратора.
    • Если SQL Server использует порт, отличный от 1433:

      • Если вы можете подключиться, указав номер порта, но не при опущении номера порта, это проблема с браузером SQL Server. Это означает, что служба браузера SQL не может указать правильный номер порта для экземпляра SQL Server, к которому требуется подключиться. Для обновления сведений также может потребоваться перезапустить службу браузера SQL.

      • Если вы не можете подключиться даже при указании номера порта, и это происходит только при удаленном подключении, это проблема с брандмауэром. Необходимо проверить параметры брандмауэра и убедиться, что порт разрешен для входящих и исходящих подключений. Также может потребоваться создать правило брандмауэра, чтобы разрешить приложению или службе SQL Server взаимодействовать через брандмауэр.

      • При использовании AlwaysOn подключение к прослушивателю не использует браузер SQL Server, поэтому необходимо указать номер порта в строка подключения. Если это не работает, попробуйте подключиться непосредственно к основному узлу на своем обычном порту SQL. Если это работает, проблема связана с прослушивателем.

Если ни один из указанных выше методов не работает, перезапустите компьютер SQL Server.

Худшим сценарием является остановка службы SQL Server, установка нового экземпляра или потенциальное перестроение компьютера, а затем повторное подключение базы данных или восстановление из резервной копии. Если используется прозрачное шифрование данных (TDE), например база данных SSISDB , убедитесь, что ключи шифрования сохраняются перед выполнением этого шага. Он предлагается в качестве варианта, так как перестроение иногда может быть быстрее, чем первопричина анализа неразрешимых проблем. Для кластеризованных установок влияние может быть меньше, так как можно перестроить узел во время его работы на альтернативном узле.

Брандмауэр

Как правило, поведение брандмауэра по умолчанию — блокировать порты SQL Server и браузера SQL Server. В этом случае удаленные подключения завершаются ошибкой, а локальные — успешно. Протестируйте его с помощью Test-NetConnection. Она доступна во всех поддерживаемых версиях Windows.

Test-NetConnection <ServerName> -Port 1433   
Test-NetConnection <ServerName>.<DomainName>.com -Port 1433

Убедитесь, что порт SQL Server прослушивается в файле ERRORLOG . Возможно, необходимо включить telnet его, добавив его в качестве функции Windows. Для этого не требуется перезагрузка. SQL Server также должен прослушивать TCP. PortQry можно скачать с сайта загрузки Майкрософт. При использовании браузера SQL Server убедитесь, что порт UDP 1434 открыт в брандмауэре и TCP-порте SQL Server.

Network

Клиент или сервер приложений может подключаться к SQL Server на другом компьютере. Возможно, у нескольких клиентов в определенной сети или подсети возникают проблемы с подключением к серверу за пределами подсети или другой определенной подсети. Сетевой брандмауэр может заблокировать подключение определенного клиента к определенному SQL Server. Например, клиент может подключаться к другим серверам SQL Server, а другие клиенты могут подключаться к проблеме SQL Server.

VPN

Если проблема возникает только в виртуальной частной сети (VPN), а не при подключении ноутбука, поставщик VPN должен устранить эту проблему. Вы можете получить трассировку сети клиента и сервера, которая может помочь показать тип проблем, вызывающих VPN. Например, удаленные пакеты являются наиболее вероятными. VPN также может изменить внутреннюю маршрутизацию между клиентом и сервером, предоставляя его другому сетевому устройству, которое блокирует подключение. Сбор трассировок сети на промежуточных устройствах помогает изолировать проблему, разделив сеть. Команда tracert может показать маршрутизацию.

Клиент

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

  • Другие клиенты могут обычно подключаться к серверу.

  • Никакие приложения не могут подключаться с этого компьютера.

  • Невозможно подключиться с помощью администратора источника данных UDL или ODBC.

    Это может быть вызвано правилом исходящего брандмауэра или неправильными суффиксами DNS по умолчанию. Попробуйте проверить полное имя сервера, например:

    Test-NetConnection <ServerName> -Port 1433   
    Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
    

    Это может быть проблема TLS. Например, сервер использует TLS 1.2, а драйверы клиента не были обновлены.

    Может быть запись файла узлов, псевдоним SQL или DNS-псевдоним, который направляет подключение к другому серверу. Использование ping и telnet. Если они работают, но драйвер завершается сбоем, подозревайте псевдоним SQL или проблему TLS.

Драйвер

Если проблема связана с драйверами, попробуйте использовать разные драйверы.

  • Если некоторые драйверы работают и другие не работают, подозревайте проблему TLS. Скачайте последний драйвер, например Microsoft OLE DB Driver for SQL Server или ODBC Driver 17 for SQL Server, и попробуйте это сделать.

  • При использовании .NET убедитесь, что вы используете последнюю версию платформы. Если он по-прежнему завершается ошибкой, он должен дать лучшее сообщение об ошибке. Вы также можете скачать последнюю версию SQL Server Management Studio , которая не зависит от SQL Server и установить ее на любом клиенте. Для этого используется SqlClient .NET класс.

Пользователь

Если проблема связана с пользователями, войдите на этот компьютер другим пользователем.

  • Если подключение выполнено успешно, просмотрите, что отличается от неудачного пользователя. Например, профиль пользователя Windows поврежден или, возможно, пользователи принадлежат другому подразделению или домену.

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

  • Если это не проблема с проверкой подлинности, журнал монитора процессов может помочь определить локальные проблемы с разрешениями, влияющие на подключение. Например, у пользователя есть имя источника данных (DSN) или перенаправление реестра на другой драйвер, локальное ограничение разрешений или что-то, что может объяснить сбой подключения.

Приложение

Если только определенное приложение завершается ошибкой, и UDL-файл завершается успешно, это может быть проблема драйвера или приложение имеет неправильный строка подключения. Убедитесь, что команда разработки приложений или сторонний поставщик проверяют строка подключения. Вы можете использовать обозреватель процессов, www.sysinternals.com чтобы узнать, какой драйвер используется, если клиент не уверены.

Средства трассировки для записи

Захват трассировки сети клиента и сервера. Одновременно запустите трассировку SQL на клиенте и сервере.

Установите WireShark с драйвером NCAP для трассировки, когда клиент и сервер находятся на одном компьютере.

У вашей организации может быть собственная группа сетевой инфраструктуры, с которыми вы можете взаимодействовать и иметь предпочтительный инструмент трассировки для выполнения записи. Они могут использовать любое средство, если оно сохраняется в формате, совместимом с сетевым монитором (NetMon.exe) или WireShark. Формат PCAP является самым популярным.

Запустите сетевой анализатор SQL (SQLNA) и пользовательский интерфейс сетевого анализатора SQL (SQLNAUI) для трассировки сети, чтобы получить простой отчет.

Дополнительная информация

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.