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

Posted

技术标签:

【中文标题】SQL Server 查询因 RODBC 连接而失败,在 SQL Server 中工作【英文标题】:SQL Server query failed with RODBC connection, works in SQL Server 【发布时间】:2015-08-10 17:33:27 【问题描述】:

您好,提前致谢。

我正在使用 R 包 RODBC 连接到 SQL Server 数据库并运行查询以删除表中的数据。当我运行其他查询(如 SELECT 语句等)时,查询运行良好,或者至少我得到一个详细的错误。下面的查询只是失败了”

bulk <- odbcConnect(dsn="DSN", uid = "UID", pwd = "PWD",case="nochange", colQuote=c(), tabQuote=c() )

prodnum <- 9803

  sqlQuery(bulk,
           paste("DELETE FROM [schema].[table] WHERE date = (SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) AND ID IN ('"
                  ,prodnum
                  ,"')"
                  , sep=""), believeNRows=FALSE)

我已经要求其他人使用我的凭据通过 SQL Server 运行查询,这对他们来说似乎工作正常。 R 只是返回这个错误:

[1] "[RODBC] ERROR: Could not SQLExecDirect 'DELETE FROM [schema].[table] WHERE date = (SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) AND ID IN ('9803)'"

【问题讨论】:

这是您尝试运行的实际错误和 SQL 吗? IN ('9803) 不对。 @duffn 我删除了单引号,但仍然没有运气,其他人再次通过 SQL 服务器运行相同的查询,它工作正常。我只是不断收到那个错误:-/ 【参考方案1】:

事实证明,如果表中没有数据,则会返回该错误。我在表中插入了一些数据,然后尝试运行删除查询。 100% 的时间都在工作。

【讨论】:

为什么没有数据就失败了? 2019 这仍然是一个问题。感谢发帖! 我今天遇到了这个问题,表中有数据。没有匹配条件,但这仍然很愚蠢。

以上是关于SQL Server 查询因 RODBC 连接而失败,在 SQL Server 中工作的主要内容,如果未能解决你的问题,请参考以下文章

查询在 SQL Server 中工作,但在 RODBC 中不工作

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

为啥@jdbc 查询因连接超时而失败?

R - 使用 RODBC 更新 SQL Server 上的数据

使用 rodbc 包从 R 查询 sql server。需要将日期/时间值作为 where 语句的一部分传递到 sqlQuery

使用 R RODBC 参数化 SQL 查询