Использование tbl с in_schema создает синтаксическую ошибку с использованием FreeTDS

Я пытаюсь создать ленивую таблицу, чтобы использовать dplyr SQL Server в Shiny Server на Ubuntu с помощью 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.

Известна ли проблема использования dplyr с драйвером FreeTDS для работы с SQL Server?

0 ответов

Это запоздалый ответ, но, надеюсь, он кому-то поможет.

См. Этот вопрос на github dbplyr для ответа.

Бег DBI::dbExecute(pool, "SET QUOTED_IDENTIFIER ON") должен решить вашу проблему.

Спасибо JakeRuss и hadley (в ссылке на проблему github dbplyr выше) за их работу по отладке этого.

Другие вопросы по тегам