3

我正在尝试创建一个惰性表,以便dplyr在 Ubuntu 上使用 Shiny Server 中的 sql 后端使用tbl抛出语法错误。

library(dbplyr)
library(dplyr)
library(pool)
library(DBI)

pool <- dbPool(odbc::odbc(),
               driver = "FreeTDS", 
               server = "server", 
               database = "database", 
               uid = "uid", 
               pwd = "password", 
               port = 1433)
data <- tbl(pool, in_schema("schema.dbo", "table"))

Error: <SQL> 'SELECT *
    FROM schema.dbo.table AS "zzz1"
    WHERE (0 = 1)'
     nanodbc/nanodbc.cpp:1587: 42000: [FreeTDS][SQL Server]Incorrect syntax near 'zzz1'.

代码在Windows环境下运行无误,生成的SQL语句在SQL中执行成功。池对象也已成功连接,因为来自闪亮的已执行查询显示在日志中。

我还检查了 odbc.ini 和 odbcinst.ini 中的连接信息是否正确。

使用带有 FreeTDS 驱动程序的 dplyr 来处理 SQL Server 是否存在已知问题?

4

1 回答 1

0

这是一个较晚的回复,但希望对某人有所帮助。

请参阅dbplyr github 上的此问题以获取答案。

跑步DBI::dbExecute(pool, "SET QUOTED_IDENTIFIER ON")应该可以解决您的问题。

感谢 JakeRuss 和 hadley(在上面的 github dbplyr 问题链接中)在调试此问题方面所做的工作。

于 2020-08-25T05:03:58.527 回答