我们正在通过一个应用程序从SQL中高吞吐量地拉取数据,可能会同时有100多个SQL请求。其中一些可能是长时间运行的,这可能是它们积累的原因。
偶尔(但不是持续性的),在调用SqlConnection.Open()时,我们会收到以下异常:
System.Exception: 从数据库获取文档时出错 ---> System.Data.SqlClient.SqlException: 在建立到 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。请验证实例名称是否正确,并确认 SQL Server 已配置为允许远程连接。(提供程序:命名管道提供程序,错误: 40 - 无法打开到 SQL Server 的连接) ---> System.ComponentModel.Win32Exception: 拒绝访问 --- 内部异常堆栈跟踪的结尾 --- at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource
导致此异常的代码如下:
我想这与连接池有关。我们是否可以在打开并使用连接之前检查连接池中是否有可用连接?或者这是由于完全不同的原因引起的?
如果您需要更多信息,请随时询问。
偶尔(但不是持续性的),在调用SqlConnection.Open()时,我们会收到以下异常:
System.Exception: 从数据库获取文档时出错 ---> System.Data.SqlClient.SqlException: 在建立到 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。请验证实例名称是否正确,并确认 SQL Server 已配置为允许远程连接。(提供程序:命名管道提供程序,错误: 40 - 无法打开到 SQL Server 的连接) ---> System.ComponentModel.Win32Exception: 拒绝访问 --- 内部异常堆栈跟踪的结尾 --- at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at BridgeService.SqlDal.GetDataFromSql(Int32 entityId)
--- 内部异常堆栈跟踪的结尾 ---导致此异常的代码如下:
public DataSet GetDataFromSql(int entityId)
{
DataSet tempDataSet = null;
using (var cnn = new SqlConnection(GetConnectionString()))
{
cnn.Open(); // this line throws the exception
try
{
// stuff gets done on cnn
}
catch (Exception e)
{
throw e;
}
}
return tempDataSet;
}
我想这与连接池有关。我们是否可以在打开并使用连接之前检查连接池中是否有可用连接?或者这是由于完全不同的原因引起的?
如果您需要更多信息,请随时询问。