Ответ 1
Как оказалось, некоторая служба SQL была остановлена на сервере. Решением службы SQL Server вручную было решение.
Я знаю, что это глупо, но все равно работает. Спасибо @PareshJ за полезный комментарий.
У меня возникла ошибка при подключении к 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 мог убедиться, что он не работает.
Как оказалось, некоторая служба SQL была остановлена на сервере. Решением службы SQL Server вручную было решение.
Я знаю, что это глупо, но все равно работает. Спасибо @PareshJ за полезный комментарий.
Для SQL2008,
Перезагрузите сервер с помощью диспетчера конфигурации.
При запуске приложения "Запуск от имени администратора". Таким образом я избежал этой ошибки.
Из здесь:
Корневая причина: Максимальное количество соединений превышено на вашем экземпляре SQL Server.
Как это исправить...!
- F8 или обозреватель объектов
- Щелкните правой кнопкой мыши на экземпляре → Нажмите "Свойства"...
- Выберите "Подключения" в поле "Выбрать страницу" слева
- Введите значение 0 (нуль) для "Максимальное количество одновременных подключений (0 = Без ограничений)"
- Перезапустите экземпляр SQL Server один раз.
Кроме того, убедитесь, что ниже включено:
следующие пункты работают для меня. Попробуйте:
Иногда указание базы данных (вместо значения по умолчанию) решает эту ошибку.
SQL 2016 решение/обходной путь здесь (также может работать в более ранних версиях). Это может не работать или быть уместным в каждой ситуации, но я исправил ошибку, предоставив пользователю базы данных права на чтение/запись в SSMS следующим образом:
База данных> Безопасность> Пользователи> Пользователь> Свойства> Собственные схемы> проверьте db_datareader и db_datawriter.
Я получил это сообщение об ошибке в строке кода, содержащей SqlConnection.Open()
выполняющий мой код .NET как приложение x64. Запуск под x86 не вызывает ошибок.
Решением было отключить опцию Force protocol encryption
для TCP/IP в %windir%\System32\cliconfg.exe
Я получил эту ошибку, потому что у пользователя, пытающегося войти, не было разрешений.
Я не рекомендую делать это, но я исправил это, предоставив пользователю db_owner
глобально. Это был локальный экземпляр, так что это не серьезная проблема безопасности.