使用 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 服务器