如果连接丢失,从SQL Server到Oracle服务器的OpenQuery将无限期挂起

时间:2011-04-12 15:25:58

标签: oracle sql-server-2005 linked-server

我有一个在SQL Server 2005数据库上运行的预定作业。它运行一个存储过程,从视图中导入数据。此视图由OPENQUERY到链接的Oracle服务器组成。

我无法控制Oracle服务器 - 它在地理位置上与Sql Server安装实际上是分开的。 View只具有只读访问权限,每30分钟从中获取一次数据。

有时,与链接服务器的连接将丢弃,挂起或无响应。发生这种情况时,作业(在SQL Server上)也会挂起,无限期地等待连接返回。在这种情况下,Job永远不会失败也不会完成,我知道的第一个就是当用户抱怨缺少数据时。

如果存在连接问题,则查询同一服务器上的数据库会失败 - 只有在链接的Oracle服务器上使用OPENQUERY时才会失去其对“连接。

有没有办法让作业意识到与链接服务器的连接已经丢失并相应地失败?或者我是否必须创建第二个作业以检查第一个作业是否未挂起?

1 个答案:

答案 0 :(得分:0)

我们遇到长期运营的类似问题。操作将启动(并且也完成了他的工作并完成),但是电话从未返回。最终,我们能够将其跟踪到关闭与Oracle服务器连接的防火墙。

我们可以通过在服务器上使用参数SQLNET.EXPIRE_TIME来防止这种情况,该参数会定期“ping”客户端,从而防止防火墙关闭端口。也许这对你的情况也有帮助。