RODBC和MS SQL Server的长时间运行查询超时

3
我需要运行一个SQL查询,它会在一个较大的表格上迭代游标(MS SQL Server 2014)。对于这个特殊目的,不使用游标将会相当困难。
与游标相关的代码保存在一个存储过程中。R 只评估 EXEC dbo.do_something。当我通过 RODBC 运行它时,查询会在30秒后无错误消息终止。我猜这是“连接超时”的值。
我有哪些选项可以让查询与 R 一起工作?

连接超时(可以在连接字符串中设置)是允许连接到服务器的时间。命令超时,即命令执行的允许时间,通常在代码中的命令对象上设置(C#,VB等),据我所知,没有办法按连接设置此超时时间。RODBC似乎在手册中没有提及超时(或者我找不到任何信息),所以我猜它不会暴露ODBC API来更改命令超时时间,这似乎有限制。 - Liesel
@les-h 感谢澄清。我想我将不得不采取不同的方法来运行此查询。 - lith
1
我目前正在包RODBCext中实现查询超时(命令超时)功能,并将在接下来的几周内发布。请参见: https://github.com/zozlak/RODBCext/issues/10 - R Yoda
@RYoda,是否有可能将查询超时实现移植到dbi odbc包中?(如果您能看一下我的问题r odbc query timeout,我会非常感激) - Odrai
@Odrai Ewh,我多年前就已经在RODBCext中实现了这个功能(虽然并不是特别困难)。我看到你已经在r-dbi/odbc上开了一个问题(包括非常好的描述)。让我们等一等,看看Jim Hester是否会实现这个功能(他比我更了解底层的nanodbc c++库...) - R Yoda
1个回答

2

看起来解决我的问题非常简单:在存储过程定义中添加SET NOCOUNT ON


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接