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

Sql server 已成功与服务器建立连接,但在登录过程中发生错误。(错误号码:233),sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,连接到SQL Server时出错: 堆栈跟踪中的详细信息包括: =================================== Cannot connect to ServerName. =================================== A connection was successfully established with the server, but then an error occurred during the login process.

连接到SQL Server时出错:

堆栈跟踪中的详细信息包括:

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

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重建解决方案(&R)

  • 停止工作进程访问数据库

  • 登录凭据是正确的

  • 能够ping服务器以确保其未关闭

来自:

根本原因:SQL Server实例上已超过最大连接数

如何修复它

  • F8或对象资源管理器
  • 右键单击实例-->单击属性
  • 在左侧的“选择页面”区域中选择“连接”
  • 将“最大并发连接数(0=无限)”的值设置为0(零)
  • 重新启动SQL Server实例一次
  • 除此之外,还应确保启用以下功能:

    • 已启用共享内存协议
    • 已启用命名管道协议
    • TCP/IP已启用

    结果是服务器上的某个SQL服务不知何故停止了。手动重新启动SQL Server服务是解决方案

    我知道这是愚蠢的,但无论如何还是奏效了。感谢@PareshJ的有用评论。

    对于SQL2008

    • 打开管理工作室
    • Rt单击实例
    • 转到属性
    • 选择安全性
    • 在服务器身份验证下,选中SQL Server和Windows身份验证模式
    • 点击OK

    使用configuration manager重新启动服务器

    有时指定数据库(而不是默认数据库)可以解决此错误。

    当您启动应用程序“以管理员身份运行”时。这样我就避免了此错误


    SQL 2016解决方案/解决方案(也可以在早期版本中使用)。这可能不适用于任何情况,但我通过在SSMS中授予数据库用户读/写模式所有权解决了此错误,如下所示:


    数据库>安全性>用户>用户>属性>拥有的架构>检查db_datareaderdb_datawriter

    我在代码行中收到了错误消息,其中包含
    SqlConnection.Open()
    以x64应用程序的形式运行我的.NET代码。以x86运行不会导致任何错误

    解决方案是在中停用TCP/IP的
    强制协议加密
    选项
    %windir%\System32\cliconfg.exe


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

  • 以管理员身份启动SSMS
  • 确保SQL服务正在运行。将启动类型更改为“自动”
  • 在SSMS的服务实例属性表中,启用以下选项:

  • 我出现此错误是因为尝试登录的用户缺少权限


    我不建议这样做,但我通过全局授予用户
    db\u所有者
    解决了这个问题。这是一个本地实例,因此不是一个巨大的安全问题

    在我的情况下,我的连接字符串中错误地包含以下内容:

    Encrypt=True
    
    改为

    Encrypt=False
    
    解决了这个问题

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

    我的问题由此得到解决。我在.NETCore中做了哪些更改 这会改变吗 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
    

    快乐编码

    添加到@Pranav Singh和@Rahul Tripathi答案之上。 在完成了这两位用户提到的所有操作之后,我的.net应用程序仍然没有连接到数据库。我的解决办法是

    打开Sql Server Configuration Manager,转到Sql Server的网络配置,单击协议,右键单击TCP/IP并选择启用。
    我还右键单击它,打开属性、Ip方向,并滚动到底部(IPAII,在TCP端口中,我设置了一个端口(1433应该是默认端口))

    如果连接字符串中指定的数据库名称不存在,您也可能会出现此错误,但有些没有帮助。仔细检查您的数据库名称

    这就是帮助我的原因:

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


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

    以下是我找到的解决方案:

    转到SQL Server管理,禁用内存共享、TCP/IP和命名管道


    重新启动服务器并重试。

    我必须做两件事:按照Joseph Wu所说的做,并将身份验证更改为SQL和Windows。但我还必须转到服务器属性>高级,并将“启用包含的数据库”更改为True。

    上面的一个解决方案给了我一个线索。 sa帐户正生成此错误。 我可以使用具有管理员权限的Windows服务帐户登录。 在最近的某个时候,一个GPO被应用来加强密码策略。 现有sa密码不符合新的强化密码策略

    使用其他管理员凭据登录SQL Server Management Studio。 实例>安全性>登录>帐户(在我的例子中是sa) 取消勾选“强制密码策略”,单击“确定”。 断开连接并使用该帐户再次登录

    为我工作


    必须重新启动服务器才能重新运行各种作业,但如果我花时间检查这些作业,我可能会在不重新启动服务器的情况下从SSM重新启动它们。

    我以前将数据库的连接数限制为2。 显然,这是一个问题。 重新启动服务器登录后,您将看到一个错误弹出窗口,只需单击“确定”。 右键单击对象资源管理器中的服务器,转到属性,转到连接,并更改有限的连接数(我从2个更改为20个)。现在一切正常