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

Posted

技术标签:

【中文标题】使用 RODBC 和 MS SQL Server 的长时间运行查询超时【英文标题】:Timeout for long-running queries with RODBC & MS SQL Server 【发布时间】:2016-02-22 12:28:14 【问题描述】:

我必须运行一个 SQL 查询,在更大的表上迭代游标(MS SQL Server 2014)。不将光标用于此特定目的将是相当困难的。

与游标相关的代码保存在存储过程中。 R 只评估了EXEC dbo.do_something。从 MS SQL Management Studio 运行代码时,EXEC dbo.do_something 按预期工作。当我通过 RODBC 运行它时,查询在 30 秒后中止且没有错误消息。我猜这是“连接超时”的值。

我必须使用哪些选项才能使查询与 R 一起使用?

【问题讨论】:

Connection Timeout(可以在连接字符串上设置)是允许连接服务器的时间。命令超时,即允许执行命令的时间,通常在代码(C#、VB 等)中的命令对象上设置,并且无法在每个连接的基础上设置它。 RODBC 似乎没有在手册中提到超时(或者我找不到任何东西),所以我猜它没有公开 ODBC API 来更改命令超时,这似乎是有限的。 @les-h 感谢您的澄清。我想我将不得不采取不同的路线来运行此查询。 我目前正在实现包RODBCext中的查询超时(命令超时)功能,并在接下来的几周内发布。见:github.com/zozlak/RODBCext/issues/10 【参考方案1】:

似乎我的特定问题的答案相当简单:将 SET NOCOUNT ON 添加到 proc 定义中。

【讨论】:

以上是关于使用 RODBC 和 MS SQL Server 的长时间运行查询超时的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ubuntu 16.04 上将 Ms SQL 服务器与 R 连接?

从 mac osx 10.11 连接到带有 RODBC 的 MS SQL 服务器

使用 docker、rbase 和 RODBC 连接到 sql server 时出错

SQL Server 2014 RODBC 连接

通过 RODBC 连接到 SQL Server 数据库

SQL Server 查询因 RODBC 连接而失败,在 SQL Server 中工作