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

enter image description here

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

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

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 и восстановление решения

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

  • учетные данные верны.

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

52
Pranav Singh 23 Дек 2015 в 10:18

11 ответов

Лучший ответ

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

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

20
Pranav Singh 21 Янв 2016 в 11:21

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

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

enter image description here

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

enter image description here

7
Joseph Wu 5 Сен 2019 в 09:12

Моя проблема решена тем, какие изменения я сделал в ядре .NET Сделайте это изменения в Appsetting.json

Server=***;Database=***;Persist Security Info=False;User ID=***; Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30

А также Выполните следующие изменения в диспетчере консоли пакетов

Scaffold-DbContext "Server=***;Database=***;Persist Security Info=False;User ID=***; Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context DatabaseContext -f

Удачного кодирования

0
yogesh bhawsar 4 Авг 2020 в 16:03

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

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

0
Tawab Wakil 18 Янв 2019 в 16:49

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

enter image description here

2
Kishor K 27 Июн 2018 в 18:15

Из здесь:

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

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

  1. F8 или обозреватель объектов
  2. Щелкните правой кнопкой мыши "Экземпляр" -> "Свойства" ...
  3. Выберите «Подключения» в области «Выбрать страницу» слева.
  4. Измените значение на 0 (ноль) для «Максимальное количество одновременных подключений (0 = Неограниченно)»
  5. Один раз перезапустите экземпляр SQL Server.

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

  • Протокол общей памяти включен
  • Протокол именованных каналов включен
  • TCP / IP включен
2
Rahul Tripathi 23 Дек 2015 в 07:20

В моем случае в строке подключения по ошибке было следующее:

Encrypt=True

Изменение на

Encrypt=False

Решил проблему

"Server=***;Initial Catalog=***;Persist Security Info=False;User  ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;"
0
Rauland 17 Июл 2020 в 16:39

Чтобы добавить поверх ответа @Pranav Singh и @Rahul Tripathi. После выполнения всего, упомянутого этими двумя пользователями, мое приложение .net все еще не подключалось к базе данных. Мое решение было.

Откройте диспетчер конфигурации сервера Sql, перейдите в раздел «Сетевая конфигурация SQL SERVER», щелкните протоколы, щелкните правой кнопкой мыши TCP / IP и выберите «Включено». Я также щелкнул правой кнопкой мыши по нему, открыл свойства, направления IP и прокрутил вниз (IPAII, и там, в TCP-порту, я установил порт (1433 должен быть по умолчанию))

0
mouchin777 17 Авг 2020 в 20:36

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

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

0
Kolob Canyon 27 Сен 2019 в 21:34

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

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

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

0
Milo 9 Июл 2019 в 12:09

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

0
Alex 24 Дек 2017 в 20:15