Sql server 已成功与服务器建立连接,但在登录过程中发生错误。(错误号码:233)
连接到SQL Server时出错: 堆栈跟踪中的详细信息包括: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.
===================================
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服务器以确保其未关闭
- 已启用共享内存协议
- 已启用命名管道协议
- TCP/IP已启用
- 打开管理工作室
- Rt单击实例
- 转到属性
- 选择安全性
- 在服务器身份验证下,选中SQL Server和Windows身份验证模式
- 点击OK
使用configuration manager重新启动服务器 有时指定数据库(而不是默认数据库)可以解决此错误。当您启动应用程序“以管理员身份运行”时。这样我就避免了此错误
SQL 2016解决方案/解决方案(也可以在早期版本中使用)。这可能不适用于任何情况,但我通过在SSMS中授予数据库用户读/写模式所有权解决了此错误,如下所示:
数据库>安全性>用户>用户>属性>拥有的架构>检查db_datareader和db_datawriter我在代码行中收到了错误消息,其中包含
SqlConnection.Open()
以x64应用程序的形式运行我的.NET代码。以x86运行不会导致任何错误
解决方案是在中停用TCP/IP的强制协议加密
选项
%windir%\System32\cliconfg.exe
以下几点对我有用。尝试:
我出现此错误是因为尝试登录的用户缺少权限
我不建议这样做,但我通过全局授予用户
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个)。现在一切正常