间歇性SQL异常-与网络有关或与实例有关的错误

Sta*_*Man 5 database sql-server sql-server-2008

我们有一个非常奇怪的间歇性问题,该问题在上个月左右开始出现,因此与mssql服务器的某些连接失败并显示以下错误:

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Run Code Online (Sandbox Code Playgroud)

该错误不会关闭站点,也不需要重新启动数据库-如果您只是重新运行,则同一查询将第二次运行。这意味着许多用户会时不时地遇到错误,并且必须刷新错误页面才能正常工作。

现在,我最初的下意识反应可能是由于:

  1. 与资源相关的问题-因此,我开始运行SQL事件探查器和perfmon,但未发现服务在努力保持每秒连接数方面的任何问题。我一直在查看MSSQL:SQL错误,MSSQL:等待统计信息,MSSQL:Exec统计信息,MSSQL:锁。有人对我应该在此处提出要求的其他统计数据有任何指导吗?

  2. 未封闭的数据库连接-经过所有数据层代码后,我排除了这一连接。我们拥有所有故障保险柜,可以阻止这种情况的发生。

  3. 与连接/网络相关的问题:我们的SQL Server与应用程序服务器位于单独的服务器(MS SQL Server Standard 2008)上(在IIS7上运行ASP.Net)-两台服务器均在xlarge Amazon EC2实例上运行,并配置了所有安全策略(根据亚马逊方向)。任何人都获得了有关如何测试两个服务器之间的连接性的指导,或者这可能是问题所在?

  4. IIS连接字符串可能有问题吗?我尚未对此进行测试,但是我们是否应该使用要连接的计算机名称来完全限定服务器的性能(仅考虑一下)?我们使用以下格式的连接字符串:server=xxxxx;Database=xxxx;uid=xxxx;password=xxx;

非常感谢您的想法和见解!

提前致谢

Sta*_*Man 4

解决了。在测试了几乎所有可能的性能指标并检查了每一段代码之后,我发现该错误是由一些已弃用的数据库代码引起的。主要问题是由使用以下代码引起的:

SqlConnection.ClearPools;
Run Code Online (Sandbox Code Playgroud)

为了供将来参考,任何其他想要调试代码和管理连接池的开发人员都可以在这里找到优秀的资源: http: //www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

  • 您能详细说明一下吗?问题到底是什么?您是如何解决的? (6认同)