【发布时间】:2011-07-18 20:35:25
【问题描述】:
这更具体地与 SQL Server Reporting Services 相关,但我也将此视为典型的 .Net 应用程序问题。
这就是问题所在。我们正在使用 SSRS 来报告来自 Oracle 数据库的数据。从第一天开始,我们的用户就抱怨他们收到诸如 ORA-2396: Exceeded maximum idle time, ORA-01012-Not logged on 等错误。
我们包括 DBA、应用程序开发人员、网络工程师,但到目前为止,我们找不到任何更好的线索。
最近在进行一些研究时,我观察到许多人记录了 .Net 与 oracle 连接的一个“已知”问题。正如他们所提到的,如果我们使用连接池,则池中甚至可能存在无用的连接。在下一次请求时,可能会使用此连接,此时将引发错误。正如我们的 DBA 所确认的,我们的 oracle 实例设置为在空闲 X 分钟时终止连接。
这里是上面提到的链接 http://msdn.microsoft.com/en-us/library/8xx3tyca(v=VS.90).aspx
http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx
还有更多。但是,我在任何地方都没有得到非常确认的声明,表明是的,这是当前(最新版本的 .Net 和 oracle 等)的问题。
在解决方案部分,他们提到我们将使用“Validate Connection=true”属性作为连接字符串的一部分。但是如果我尝试使用它,它会显示“不支持关键字 - 验证连接”。 (我也试过Validcon)
我的问题是这些 1. 是否确认这个从连接池读取的“脏”问题存在? 2. 如果是,有什么解决办法? 3. 如果不是,是什么导致了我们的问题。
如果您需要更多信息,请随时发表评论。
【问题讨论】:
-
有效的 SQL Server 连接字符串在这里:msdn.microsoft.com/en-us/library/…。您可能想尝试关闭连接池:设置 Max Pool Size = 1 来执行此操作。
-
根据组织政策,不允许使用有关限制池大小或关闭池的选项。
标签: .net ssrs-2008 odp.net oracleclient