Соединение было успешно установлено с сервером, но затем произошла ошибка во время процесса входа в систему. (Номер ошибки: 233)

У меня возникла ошибка при подключении к SQL Server:

введите описание изображения здесь

Подробности в Trace Stack:

===================================

Cannot connect to ServerName.

===================================

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) (.Net SqlClient Data Provider)

------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476

------------------------------
Server Name: ServerName
Error Number: 233
Severity: 20
State: 0


------------------------------
Program Location:

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   at System.Data.SqlClient.TdsParserStateObject.ReadByte()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject, Boolean withFailover)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

ПРИМЕЧАНИЕ Я пробовал

  • закрытие, повторное открытие Sql Server Management Studio.

  • закрытие, повторное открытие VS и восстановление решения

  • убитый рабочий процесс, обращающийся к базе данных.

  • учетные данные для входа верны.

  • чтобы сервер ping мог убедиться, что он не работает.

Ответ 1

Как оказалось, некоторая служба SQL была остановлена ​​на сервере. Решением службы SQL Server вручную было решение.

Я знаю, что это глупо, но все равно работает. Спасибо @PareshJ за полезный комментарий.

Ответ 2

Для SQL2008,

  • открыть Management Studio
  • Rt нажмите на экземпляр
  • перейти к свойствам
  • выберите Безопасность
  • Под Аутентификацией сервера проверьте SQL Server и Режим аутентификации Windows
  • ударил ОК

Перезагрузите сервер с помощью диспетчера конфигурации.

Ответ 3

При запуске приложения "Запуск от имени администратора". Таким образом я избежал этой ошибки.

enter image description here

Ответ 4

Из здесь:

Корневая причина: Максимальное количество соединений превышено на вашем экземпляре SQL Server.

Как это исправить...!

  • F8 или обозреватель объектов
  • Щелкните правой кнопкой мыши на экземпляре → Нажмите "Свойства"...
  • Выберите "Подключения" в поле "Выбрать страницу" слева
  • Введите значение 0 (нуль) для "Максимальное количество одновременных подключений (0 = Без ограничений)"
  • Перезапустите экземпляр SQL Server один раз.

Кроме того, убедитесь, что ниже включено:

  • Включен протокол общей памяти.
  • Протокол Named Pipes включен
  • TCP/IP включен

Ответ 5

следующие пункты работают для меня. Попробуйте:

  1. запустить SSMS от имени администратора
  2. убедитесь, что службы SQL работают. Измените тип запуска на "Автоматический"

enter image description here

  1. В SSMS в таблице свойств экземпляра службы включите ниже:

enter image description here

Ответ 6

Иногда указание базы данных (вместо значения по умолчанию) решает эту ошибку.

Ответ 7

SQL 2016 решение/обходной путь здесь (также может работать в более ранних версиях). Это может не работать или быть уместным в каждой ситуации, но я исправил ошибку, предоставив пользователю базы данных права на чтение/запись в SSMS следующим образом:

База данных> Безопасность> Пользователи> Пользователь> Свойства> Собственные схемы> проверьте db_datareader и db_datawriter.

Ответ 8

Я получил это сообщение об ошибке в строке кода, содержащей SqlConnection.Open() выполняющий мой код .NET как приложение x64. Запуск под x86 не вызывает ошибок.

Решением было отключить опцию Force protocol encryption для TCP/IP в %windir%\System32\cliconfg.exe

Принудительное шифрование протокола

Ответ 9

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

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