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


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

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

Примечание.

Не все вопросы применимы ко всем проблемам. Однако эти вопросы помогут вам подумать, как устранять проблемы с подключением.

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

Метод сбора данных

Для сбора данных можно использовать такие средства, как средство записи шагов проблем (PSR), трассировка сети и трассировка NETLOGON. В этом разделе приведены подробные инструкции по установке и настройке сочетания всех этих средств.

Выполните эти действия одновременно на клиентских и серверных компьютерах. Если приложение является 3-уровневой или n-уровневой архитектурой, запустите установку на промежуточных серверах.

  1. Установите WireShark на всех затронутых компьютерах или используйте встроенную NETSH команду (Windows 2008 или более поздние версии). Перезагрузка не требуется.

  2. Включите ведение журнала отладки NETLOGON на клиенте и всех серверах, выполнив следующую команду:

    NLTEST /DBFLAG:2080FFFF

  3. Если это возможно, выполните одно из следующих действий.

    • Перезапустите компьютер клиента.
    • Попросите пользователя снова выйти из системы и войти в систему.
    • Закройте и снова откройте клиентское приложение.
  4. На клиентском компьютере запустите средство записи шагов проблем (psr.exe), а затем нажмите кнопку "Начать запись".

    Это средство точно фиксирует все действия пользователя, предшествующие проблеме, и сохраняет результаты в файл .zip.

  5. Запустите запись сети на всех компьютерах.

  6. Если вы используете NETSH, выполните NETSH TRACE START CAPTURE=YES TRACEFILE=C:\TEMP%computername%.ETL команду (используйте соответствующее имя файла или пути).

  7. Сброс кэша системы доменных имен (DNS) на всех компьютерах, выполнив IPCONFIG /FLUSHDNS команду.

  8. Снимите кэш NETBIOS на всех компьютерах, выполнив NBTSTAT /RR команду.

  9. Очистка билетов клиента Kerberos, выполнив KLIST purge команду.

  10. Снимите билеты на каждом сервере KLIST -li 0x3e7 purge , выполнив команду.

    Примечание.

    Введите команду . Не копируйте и вставьте в командную строку, так как дефис может быть преобразован в длинный (em) дефис. Значение KLIST учитывает регистр.

  11. Воспроизведите проблему.

  12. Остановите запись psr.exe .

  13. Остановите захват сети. Сохраните записанный файл, выполнив команду NETSH: NETSH TRACE STOP с помощью понятного имени. Например, имя файла может быть SQLProd01.netmon.cap.

  14. Дождитесь повторного появления командной строки, а затем закройте окно. Не закрывайте окно командной строки до появления запроса.

  15. Скопируйте журнал NETLOGON в C:\windows\debug\netlogon.log и присвойте файлу понятное имя. Например, SQLProd01.netlogon.log.

  16. Отключите ведение журнала, выполнив NLTEST /DBFLAG:0x0 команду.

Сбор данных для классификации проблем

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

Прежде чем перейти к конкретным вопросам, убедитесь, что выполнены все необходимые условия, необходимые для подключений SQL Server. Дополнительные сведения о предварительных требованиях см. в разделе "Рекомендуемые предварительные требования" и контрольный список для устранения неполадок с подключением к SQL Server.

Более широкие вопросы о перспективах
  • Влияет ли проблема только на подключения к базе данных или влияет ли она также на подключения к веб-сайту и общей папке? Многие случаи сообщаются команде SQL Server, так как они происходят на сервере базы данных. Однако возможно, что проблема не связана с базой данных вообще и может потребовать более общей поддержки Windows или Active Directory.
  • Существует ли связь доверия между доменом пользователя, доменом клиента или доменом сервера, если они отличаются? Это внешний, лес, односторонняя, двусторонняя или нет?
  • Правильно ли работает подключение, если все ресурсы находятся в одном домене?
  • Является ли проблема периодическим или периодическим или является ли она согласованной?
  • Возникает ли проблема только в том случае, если в приложении используется несколько пользователей? Часто ли это происходит, если больше пользователей используют его?
  • Возникает ли проблема только в определенное время дня или в определенные дни недели?
  • Возникает ли проблема только в том случае, если выполняется резервное копирование или база данных переиндексирована?
  • Влияет ли проблема на несколько серверов?
  • Влияет ли проблема только на один узел в кластере n-node? Если да, это может оказаться более эффективным, чтобы рассмотреть возможность перестроения этого конкретного узла.
  • Влияет ли проблема только на один или два клиента из нескольких? Если да, возможно, перестроение будет более эффективным.
  • Влияет ли проблема только на именованные каналы, а не TCP (или наоборот)?
  • Возникает ли проблема при использовании имени входа SQL Server и TCP/IP?
  • Существует ли рабочий случай, который можно сравнить с неудачным случаем? Как отличаются системы?
Клиентский компьютер

Используйте следующие вопросы для сбора данных о различных компонентах клиентского компьютера. Эти данные могут быть полезны при выявлении проблем.

  • Что такое имя операционной системы, выпуск и версия (WinVer)?

  • Что такое имя и версия драйвера ИЛИ поставщика SQL Server?

  • Что такое имя компьютера и IP-адрес?

  • Что такое состояние домена компьютера? Если он присоединен к домену, что такое доменное имя?

  • Какая среда выполнения приложения используется? Например, службы IIS (IIS), Windows Forms, Web Sphere или задание служб SQL Server Integration Services (SSIS).

  • Какой язык приложения используется?

  • Что используется строка подключения?

  • Какой тип проверки подлинности используется для подключения к серверу? Например, new Technology LAN Manager (NTLM), Kerberos, SQL или Azure Active Directory (AAD).

  • Если приложение является сервером или службой, оно делегирует учетные данные пользователя серверной базе данных?

  • Используется ли ограниченное делегирование?

  • Что такое учетная запись службы приложений и домен?

  • Какой тип службы используется? Это физический, виртуальный или облачный? Например, IaaS, Веб-приложение, веб-роль или Power BI.

  • Что такое драйвер клиента? Это подключение к базе данных Java (JDBC) или работает ли оно в Linux или Mac?

    Примечание.

    Рабочие процессы в настоящее время более ориентированы на Windows.

  • Влияет ли проблема только на устаревших поставщиков, таких как Provider=SQLOLEBD или Driver={SQL Server}, а не собственный клиент SQL и более поздние драйверы (или наоборот)?

  • Возникает ли проблема только в одном приложении или в нескольких приложениях?

  • Не удается ли файл универсального канала данных (UDL) при попытке подключиться к другим серверам SQL Server или не удается выполнить подключение только к серверу, который имеет проблему?

  • Входит ли пользователь на сервер SQL Server и пытается подключиться с помощью SQL Server Management Studio (SSMS)?

  • Возникает ли проблема только при использовании имени NETBIOS сервера, а не при использовании полного доменного имени (FQDN) (или наоборот)? Работает ли он с помощью IP-адреса?

  • Включена ли функция Credential Guard для клиента, работающего Windows 10 Корпоративная Edition? Если да, это может повлиять на сценарии полного делегирования.

Сведения о журнале

Используйте следующие вопросы для сбора данных о файлах журнала:

  • Что такое точное сообщение об ошибке в стеке вызовов?
  • Был ли журнал собран из файлов SQL Server ERRORLOG и ERRORLOG.1 ?
  • Были ли журналы событий приложения собраны с клиента и сервера?
  • Были ли файлы журнала клиентских приложений и файлы конфигурации собраны? Например, web.config, rsreportserver.config, *.config или *.ini.
  • Есть ли доступное визуальное представление сети, показывающее компьютеры, маршрутизаторы и т. д.?
Новые или существующие проблемы

Относится к определению того, является ли проблема недавней разработкой или если она сохранялась в течение некоторого времени:

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

Для связанного сервера соберите сведения о сервере среднего уровня и сервере серверной части. Для проблемы с делегированием iis to-SQL соберите сведения на веб-сервере, включая параметры веб-конфигурации и проверки подлинности.

  • Что такое имя операционной системы, выпуск и версия (Winver)?
  • Что такое имя и версия базы данных?
  • Что такое имя компьютера?
  • Что такое IP-адрес?
  • Что такое доменное имя, если компьютер присоединен к домену?
  • Что такое учетная запись и домен службы SQL Server?
  • Что такое имя экземпляра SQL Server?
  • Какие протоколы включены?
  • Какой порт прослушивает сервер?
  • Что такое имя канала сервера? Эти сведения можно найти в журнале ошибок.
  • Какой тип среды используется? Это физический, виртуальный или облачный? Например, IaaS (SQL в виртуальной машине Azure) или PaaS (База данных SQL Azure, Управляемый экземпляр SQL (MI)).
  • Развертывается ли база данных как автономная, кластеризованная, зеркальная или с помощью AlwaysOn?
  • Что такое имя партнера отработки отказа и IP-адрес?
  • Что такое имя виртуального кластера или имя прослушивателя и порт?
  • Какой IP-адрес виртуального IP-адреса или прослушивателя?
  • Какая операционная система установлена в базе данных? Это Windows, Linux или Mac? Это может повлиять на сбор данных.
  • Что такое расположение базы данных? Это в Azure?
  • Что такое текущее состояние сервера с точки зрения последнего пакета обновления и накопительного обновления? Нет никакой точки в отладке проблемы, которая уже исправлена.
  • Недавно обновлен SQL Server для поддержки tls 1.2? Были ли клиенты также обновлены? Отключена ли протокол TLS 1.0?
  • Что такое текущее состояние службы SQL Server? Работает ли он?
  • Что такое состояние службы браузера SQL? Работает ли он?
  • Какова специфика проблемы с учетной записью службы? Разрешает ли запуск сервера с помощью другой учетной записи службы?
Сведения о пользователе

Соберите следующие сведения о пользователе:

  • Выполняет ли пользователь вход на клиентский компьютер напрямую или удаленно обращается к нему? Например, использует ли пользователь браузер?
  • Является ли пользователь службой, например агентОМ SQL? Используется ли удостоверение процесса или используются ли сохраненные учетные данные?
  • Какой тип проверки подлинности используется для подключения к клиентскому приложению? Это проверка подлинности Windows, Forms или AAD?
  • Подключается ли пользователь к серверу с помощью встроенной безопасности?
  • Что такое имя пользователя и доменное имя?

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

  • Что такое имя компьютера и IP-адрес?
  • Присоединен ли компьютер к домену? Если да, что такое доменное имя?
  • Подключается ли пользователь через VPN или прокси-сервер? Возникает ли проблема, если любой метод подключен напрямую?
  • Если пользователь подключается к веб-серверу, балансируется ли нагрузка сервера?
  • Используются ли липкие сеансы или сходство сеансов?
  • Входит ли пользователь на сервер терминала или поле перехода и обращается к приложению?
  • Влияет ли проблема только на пользователей в определенных подразделениях (OUS)?
  • Перемещен ли пользователь, клиент или сервер в другое подразделение в Active Directory?
  • Влияет ли проблема только на пользователей, не являющихся администраторами?
  • Влияет ли проблема на всех или только некоторых пользователей в определенном домене?

См. также

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

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