OleDbConnection,Excel和连接池的问题

时间:2011-05-30 09:50:02

标签: .net excel oledb connection-pooling

所以,我有C#/ASP.NET Oledb - MS Excel read "Unspecified error"中描述的相同症状,但我的my answer似乎没有解决它。即使总是关闭OleDBConnection并处理它也会显示相同的症状。

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 12.0;", _excelFile);
using (var conn = new OleDbConnection(connectionString))
{
    try
    {
        DoSomething();
    }
    finally
    {
        conn.Close();
    }
}

现在我找到了关于连接池的以下信息:

  

OLE DB的.NET Framework数据提供程序使用OLE DB会话池自动池连接。连接字符串参数可用于启用或禁用OLE DB服务,包括池。例如,以下连接字符串禁用OLE DB会话池和自动事务登记。

     

Provider = SQLOLEDB; OLE DB Services = -4; Data Source = localhost; Integrated Security = SSPI;

     

我们建议您在完成连接后始终关闭或丢弃连接,以便将连接返回到池中。未显式关闭的连接可能无法返回池。例如,如果已达到最大池大小且连接仍然有效,则超出范围但尚未显式关闭的连接将仅返回到连接池。

(资料来源:http://msdn.microsoft.com/en-us/library/ms254502.aspx

什么是连接字符串属性OLE DB SERVICES以及-4的值是什么?

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题是正确的,你想知道连接字符串属性OLE DB Services=-4是什么意思。

您可以找到相应的文档hereherehere。我希望这些信息是您所需要的。如果你想要使用DBPROPVAL_OS_AGR_AFTERSESSION属性,它的值为8(参见oledb.h)。

答案 1 :(得分:0)

我不是真的进入OleDbConnections,但你看过这篇文章吗?

http://blogs.msdn.com/b/selvar/archive/2007/11/10/ole-db-resource-pooling.aspx

本文中的表4提到了OLE DB SERVICES属性以及属于-number值的值。