Syl*_*ain 5 sql-server ado.net sqlclient
我们在IIS中托管了WCF服务,在服务器上运行.该服务连接到另一台服务器上运行的SQL Server实例.在我们的代码中,我们打开并关闭每个请求的连接.WCF服务每分钟向数据库发出几个请求.
如果我在不停止WCF服务的情况下重新启动SQL服务,则WCF服务会开始将错误记录到错误日志中,这是完全正常的.
问题是,有时(并非总是),在SQL服务重新启动后,WCF服务会继续在每个请求上报告此错误:
Cannot open database "mydatabase" requested by the login. The login failed."
Run Code Online (Sandbox Code Playgroud)
错误的堆栈跟踪结束于:
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
Run Code Online (Sandbox Code Playgroud)
在发生这种情况时,我可以使用SQL Management Studio(来自运行WCF服务的同一台机器)连接到数据库.要解决此问题,我必须为我的WCF服务回收应用程序池.
所以我的问题是:什么可以导致这个,我该怎么做才能确保我的应用程序可以从SQL重启中恢复?
PS:在我的开发盒(也运行IIS)上,当我进行相同的测试时,我得到相同的错误几次(当数据库开始加载时我猜)然后它再次开始工作.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |