Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применяется к: SQL Server
Исходный номер KB: 4009936
Рекомендуемые предварительные требования
Чтобы эффективно устранять проблемы с подключением, соберите следующие сведения:
Текст сообщения об ошибке и коды ошибок. Проверьте, является ли ошибка непрерывной (возникает только иногда) или постоянной (появляется постоянно).
Журналы событий приложения и системы из SQL Server и клиентских систем. Эти журналы помогут проверить наличие проблем с системой в SQL Server.
Если соединения не удаются из приложения, соберите строки подключения из приложения. Эти строки обычно находятся в файлах web.config для ASP.NET приложений.
Сбор и проверка журналов ошибок SQL Server для других сообщений об ошибках и исключений.
Если у вас есть доступ администратора к компьютеру SQL Server, соберите и просмотрите текущие параметры компьютера и учетные записи служб с помощью следующей процедуры:
Скачайте последнюю версию SQLCHECK.
Распакуйте скачанный файл в папку, например C:\Temp.
Запустите командную строку от имени администратора для сбора данных и сохранения в файл. Например:
SQLCHECK > C:\Temp\server01.SQLCHECK.TXT.
Примечание.
Если вы устраняете проблемы с подключением из удаленного клиента или устраняете неполадки с запросами связанного сервера, запустите средство SQLCHECK во всех системах, участвующих в работе.
Быстрый контрольный список для устранения неполадок с подключением
Примечание.
В следующих разделах вы можете быстро проверить наличие проблем с подключением. Ознакомьтесь с отдельными разделами, чтобы получить подробные инструкции по устранению неполадок.
Вариант 1
Если у вас есть доступ к выходным данным средства SQLCHECK, упоминаемого в разделе "Рекомендуемые предварительные требования ", и просмотрите сведения в различных разделах выходного файла (компьютер, безопасность клиента и SQL Server), используйте сведения для решения проблем, влияющих на вашу проблему. См. следующие примеры.
| Раздел в файле | Текст, который необходимо найти | Потенциальное действие | Может помочь в устранении неполадок (примеры) |
|---|---|---|---|
| Сведения о компьютере | Предупреждение. Сетевой драйвер может быть устаревшим | Проверьте наличие новых драйверов в Интернете. | Различные ошибки подключения |
| Сведения о безопасности клиента и драйверах | Наборы шифров Diffie-Hellman включены. Возможный риск периодических сбоев TLS, если версия алгоритма отличается от клиентов и серверов | Если у вас возникают периодические проблемы с подключением, см. статью "Ошибки принудительного закрытия подключения TLS у приложений при подключении к серверам SQL в Windows". | Удаленный хост принудительно разорвал существующее подключение |
| Сведения о безопасности клиента и драйверах | Псевдонимы SQL | При наличии убедитесь, что псевдонимы настроены правильно и указывают на правильный сервер и IP-адреса. | При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром |
| Сведения о SQL Server | Услуги, интересующие вас | Если служба SQL не запущена, запустите ее. Если у вас возникли проблемы с подключением к именованным экземплярам, убедитесь, что служба браузера SQL Server запущена или попробуйте перезапустить службу браузера. | При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром |
| Сведения о SQL Server | Свойства учетной записи службы домена | Если вы настраиваете связанные серверы в SQL Server, и значение Trust for Del установлено в false, могут возникнуть проблемы с аутентификацией при выполнении запросов связанных серверов. | Устранение неполадок с ошибками «Вход не выполнен для пользователя» |
| Сведения о SQL Server | Служебное имя не существует | Проверьте эту таблицу, чтобы убедиться, что SPN для вашего SQL Server правильно настроены, и исправьте любые выявленные проблемы. | Невозможно создать контекст SSPI |
| Сведения о SQL Server | Сведения об экземпляре SQL Server | Проверьте значения TCP Включено, TCP-порты и т. д. Проверьте, включен ли TCP/IP на стороне сервера, и проверьте, прослушивает ли экземпляр SQL Server по умолчанию порт 1433 или другой. | Различные ошибки подключения |
Вариант 2
Если вы не можете запустить SQLCHECK на компьютере SQL Server, перед выполнением подробного устранения неполадок можно проверить следующие элементы:
Убедитесь, что SQL Server запущен и что в журнале ошибок SQL Server отображается следующее сообщение:
SQL Server готов принимать подключения клиентов. Это информационное сообщение, никаких действий пользователя не требуется.
Используйте следующую команду в PowerShell, чтобы проверить состояние служб SQL Server в системе:
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}Используйте следующую команду, чтобы найти файл журнала ошибок для конкретной строки "SQL Server теперь готов к клиентским подключениям. Это сообщение является информационным; никаких действий пользователя не требуется».
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."Проверьте базовое подключение по IP-адресу и проверьте наличие каких-либо аномалий:
ping -a <SQL Server machine>, ping -a <SQL Server IP address>Если вы заметили какие-либо проблемы, обратитесь к администратору сети. Кроме того, можно использоватьTest-NetConnectionв PowerShell:$servername = "DestinationServer" Test-NetConnection -ComputerName $servernameПроверьте, прослушивает ли SQL Server соответствующие протоколы, просматривая журнал ошибок:
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "Server is listening on" , "ready to accept connection on" -AllMatchesПроверьте, можно ли подключиться к SQL Server с помощью UDL-файла. Если это работает, то может возникнуть проблема со строкой подключения. Инструкции по процедуре тестирования UDL см. в разделе "Проверка подключения OLE DB к SQL Server с помощью UDL-файла". Кроме того, для создания и запуска UDL-Test.udl-файла (хранящегося в папке %TEMP% можно использовать следующий скрипт):
clear $ServerName = "(local)" $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`"" Set-Content -Path ($env:temp + "\UDL-Test.udl") -Value $UDL_String -Encoding Unicode #open the UDL Invoke-Expression ($env:temp + "\UDL-Test.udl")Проверьте, можно ли подключиться к SQL Server из других клиентских систем и различных имен входа пользователей. Если у вас есть возможность, проблема может быть связана с клиентом или именем входа, который испытывает проблему. Проверьте журналы событий Windows на проблемном клиенте для получения дополнительных указателей. Кроме того, проверьте, обновлены ли сетевые драйверы.
Если у вас возникли сбои при входе, убедитесь, что логин (учетная запись сервера) существует и имеет
CONNECT SQLправа доступа к SQL Server. Кроме того, убедитесь, что база данных по умолчанию, назначенная учетной записи, правильна, и что соответствующий пользователь базы данных имеетCONNECTразрешения на доступ к базе данных. Дополнительные сведения о предоставлении субъекту базы данных разрешений см. в разделе GRANTCONNECTDatabase Permissions. Дополнительные сведения о предоставленииCONNECT SQLразрешений субъекту-серверу см. в разделе GRANT Server Permissions. Используйте следующий сценарий, чтобы определить эти разрешения:clear ## replace these variables with the login, user, database and server $server_principal = "CONTOSO\JaneK" $database_principal = "JaneK" $database_name = "mydb" $server_name = "myserver" Write-Host "`n******* Server Principal (login) permissions *******`n`n" sqlcmd -E -S $server_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as login_type, convert(varchar(32), pr.name) as login_name, is_disabled, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name, convert(varchar(32), default_database_name) as default_db_name FROM sys.server_principals AS pr LEFT OUTER JOIN sys.server_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE is_fixed_role = 0 -- Remove for SQL Server 2008 and name = '" + $server_principal + "'") Write-Host "`n******* Database Principal (user) permissions *******`n`n" sqlcmd -E -S $server_name -d $database_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as user_type, convert(varchar(32),pr.name) as user_name, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name FROM sys.database_principals AS pr LEFT OUTER JOIN sys.database_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE pr.is_fixed_role = 0 and name = '" + $database_principal + "'") Write-Host "`n******* Server to Database Principal mapping ********`n" sqlcmd -E -S $server_name -d $database_name -Q ("exec sp_helplogins '" + $server_principal + "'")Если вы устраняете неполадки, связанные с Kerberos, вы можете использовать сценарии, приведенные в руководстве по определению типа проверки подлинности Kerberos.
Распространенные проблемы с подключением
Когда вы прошли предварительные требования и контрольный список, ознакомьтесь с распространенными проблемами подключения и выберите соответствующее сообщение об ошибке для подробных действий по устранению неполадок.