已成功与服务器建立连接,但在登录过程中发生错误.(错误号码:233)

Pra*_*ngh 28 sql-server sql-server-2008-r2

连接到SQL Server时出错:

在此输入图像描述

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()
Run Code Online (Sandbox Code Playgroud)

注意 我试过了

  • 关闭,重新打开Sql server Management Studio.

  • 关闭,重新打开VS和重建解决方案

  • 杀死工人进程访问数据库.

  • 登录凭据是正确的.

  • 能够ping服务器以确保它不会关闭.

Tys*_*bby 217

Visual Studio 开发环境中的连接字符串出现相同错误

我们的开发数据库服务器最近获得了自签名证书,因此它自动变得不可信。这导致了上面提到的登录错误。我添加TrustServerCertificate=True到我的连接字符串中,现在它可以工作了。

"Server=TheServerAddress; Database=TheDataBase; User Id=TheUsername; Password=ThePassword; TrustServerCertificate=True"

注意:不建议在生产环境中使用此证书配置。

  • 这为我解决了这个问题。这似乎是 Microsoft.Data.SqlClient 版本 2 中的重大更改。请参阅 https://erikej.github.io/sqlclient/efcore/2020/06/22/sqlclient-2-breaking-changes.html (2认同)

小智 39

对于SQL2008,

  • 打开Management Studio
  • rt点击实例
  • 物业
  • 选择安全性
  • 服务器身份验证下,检查SQL Server和Windows身份验证模式
  • 点击确定

使用配置管理器重启服务器.


rau*_*and 36

就我而言,我的连接字符串中错误地出现了以下内容:

Encrypt=True
Run Code Online (Sandbox Code Playgroud)

更改为

Encrypt=False
Run Code Online (Sandbox Code Playgroud)

解决了问题

"Server=***;Initial Catalog=***;Persist Security Info=False;User  ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;"
Run Code Online (Sandbox Code Playgroud)

  • +1 这似乎是 .Net Core 7 的新规范。昨天更新之前工作正常,但今天失败了,直到添加了这个。 (6认同)
  • 它工作正常,但我认为添加 TrustServerCertificate=True 比通过添加 Encrypt=False 禁用加密更好。 (5认同)
  • 否决票是因为禁用加密可能违反许多公司的政策,并且至少违反最佳实践。 (2认同)

小智 13

以下几点对我有用。尝试:

  1. 以管理员身份启动 SSMS
  2. 确保 SQL 服务正在运行。将启动类型更改为“自动”

在此处输入图片说明

  1. 在 SSMS 中,在服务实例属性表中,启用以下:

在此处输入图片说明


Pra*_*ngh 12

原来是某些SQL服务在服务器上以某种方式停止了.手动重新启动SQL Server服务是解决方案.

我知道这是愚蠢的,但无论如何都有效.感谢@PareshJ的有用评论.


aem*_*mre 12

我使用这个参数解决了这个问题 Trusted_Connection=true;TrustServerCertificate=True

如果遇到问题,请更新 OLEDB 驱动程序 18.6.5

谢谢。


Tha*_*bet 9

对于 MS SQL Management Studio

在连接窗口中,选择“选项”,然后选择“连接属性”选项卡,然后选中“信任服务器证书”选项:

在此输入图像描述


Duc*_*ing 8

这对我有帮助[src]

文件 > 连接对象资源管理器... > 选项(右下) > 连接属性选项卡 > 信任服务器证书复选框

在此处输入图片说明


小智 7

对我来说,将Trusted_Connection=True添加到连接字符串有帮助。


Rik*_*ous 5

如果连接字符串中指定的数据库名称不存在,您也可能会收到此错误,这有点无济于事。仔细检查您的数据库名称!