Проблема с записью в схему не по умолчанию, когда таблица не имеет _ в имени

Описание проблемы и ожидаемый результат

Когда я пытаюсь использовать dbWriteTable() для записи в схему не по умолчанию, происходит сбой при использовании имени таблицы без символа "_". Сообщение об ошибке:

Error in connection_sql_tables(conn@ptr, catalog_name = if ("catalog" %in% : nanodbc/nanodbc.cpp:2525: 24000: [Microsoft][ODBC SQL Server Driver]Invalid cursor state

Я понимаю, что работа со схемами, отличными от стандартных, является областью довольно активной разработки, и я ссылаюсь на другие ветки проблем, в которых возникли проблемы с работой со схемами, отличными от стандартных. И если я каким-то образом пропустил решение, которое кто-то нашел в одной из этих тем, я извиняюсь.

  1. https://github.com/r-dbi/odbc/issues/91
  2. https://github.com/r-dbi/odbc/issues/140
  3. https://github.com/r-dbi/odbc/issues/175
  4. https://github.com/r-dbi/odbc/issues/191
  5. https://github.com/r-dbi/odbc/issues/197
  6. https://github.com/r-dbi/odbc/issues/260

База данных

SQL Server 2017

Воспроизводимый пример

library(odbc)
library(dbplyr)
library(dplyr)
library(DBI)

con <- dbConnect(odbc(),
                 Driver = "SQL SERVER",
                 Server = "SERVER_NAME",
                 Database = "DB_NAME",
                 UID = "USER_ID",
                 PWD = "PASSWORD")

#Works on default schema, no problem
dbWriteTable(con,
             "newTableIris",
             iris)

# This works
dbWriteTable(con,
             Id(schema = "EXISTING_SCHEMA",
                table = "newTableIris_"),
             iris)

# This fails with error message above
dbWriteTable(con,
             Id(schema = "EXISTING_SCHEMA",
                table = "newTableIris"),
             iris)

Информация о сеансе

- Session info --------------------------------------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.5.2 (2018-12-20)
 os       Windows Server >= 2012 x64  
 system   x86_64, mingw32             
 ui       RStudio                     
 language (EN)                        
 collate  English_United States.1252  
 ctype    English_United States.1252  
 tz       America/New_York            
 date     2019-03-05                  

- Packages ------------------------------------------------------------------------------------------------------------------------
 package     * version date       lib source        
 assertthat    0.2.0   2017-04-11 [1] CRAN (R 3.5.2)
 backports     1.1.3   2018-12-14 [1] CRAN (R 3.5.2)
 bit           1.1-14  2018-05-29 [1] CRAN (R 3.5.2)
 bit64         0.9-7   2017-05-08 [1] CRAN (R 3.5.2)
 blob          1.1.1   2018-03-25 [1] CRAN (R 3.5.2)
 callr         3.1.1   2018-12-21 [1] CRAN (R 3.5.2)
 cli           1.0.1   2018-09-25 [1] CRAN (R 3.5.2)
 crayon        1.3.4   2017-09-16 [1] CRAN (R 3.5.2)
 DBI         * 1.0.0   2018-05-02 [1] CRAN (R 3.5.2)
 dbplyr      * 1.3.0   2019-01-09 [1] CRAN (R 3.5.2)
 desc          1.2.0   2018-05-01 [1] CRAN (R 3.5.2)
 devtools      2.0.1   2018-10-26 [1] CRAN (R 3.5.2)
 digest        0.6.18  2018-10-10 [1] CRAN (R 3.5.2)
 dplyr       * 0.8.0.1 2019-02-15 [1] CRAN (R 3.5.2)
 fs            1.2.6   2018-08-23 [1] CRAN (R 3.5.2)
 glue          1.3.0   2018-07-17 [1] CRAN (R 3.5.2)
 hms           0.4.2   2018-03-10 [1] CRAN (R 3.5.2)
 magrittr      1.5     2014-11-22 [1] CRAN (R 3.5.2)
 memoise       1.1.0   2017-04-21 [1] CRAN (R 3.5.2)
 odbc        * 1.1.6   2018-06-09 [1] CRAN (R 3.5.2)
 pillar        1.3.1   2018-12-15 [1] CRAN (R 3.5.2)
 pkgbuild      1.0.2   2018-10-16 [1] CRAN (R 3.5.2)
 pkgconfig     2.0.2   2018-08-16 [1] CRAN (R 3.5.2)
 pkgload       1.0.2   2018-10-29 [1] CRAN (R 3.5.2)
 prettyunits   1.0.2   2015-07-13 [1] CRAN (R 3.5.2)
 processx      3.2.1   2018-12-05 [1] CRAN (R 3.5.2)
 ps            1.3.0   2018-12-21 [1] CRAN (R 3.5.2)
 purrr         0.3.0   2019-01-27 [1] CRAN (R 3.5.2)
 R6            2.4.0   2019-02-14 [1] CRAN (R 3.5.2)
 Rcpp          1.0.0   2018-11-07 [1] CRAN (R 3.5.2)
 remotes       2.0.2   2018-10-30 [1] CRAN (R 3.5.2)
 rlang         0.3.1   2019-01-08 [1] CRAN (R 3.5.2)
 rprojroot     1.3-2   2018-01-03 [1] CRAN (R 3.5.2)
 sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.5.2)
 tibble        2.0.1   2019-01-12 [1] CRAN (R 3.5.2)
 tidyselect    0.2.5   2018-10-11 [1] CRAN (R 3.5.2)
 usethis       1.4.0   2018-08-14 [1] CRAN (R 3.5.2)
 withr         2.1.2   2018-03-15 [1] CRAN (R 3.5.2)

person drizzle123    schedule 06.03.2019    source источник
comment
dbCreateTable() работает?   -  person krlmlr    schedule 13.03.2019
comment
dbCreateTable() не вставляет строки, dbAppendTable() вставляет (но сначала нужно dbCreateTable(). ?   -  person krlmlr    schedule 16.03.2019
comment
Использовал dbCreateTable() и dbAppendTable(), чтобы попытаться записать таблицу в схему, отличную от стандартной. Но это не удалось. ##### Tables are created, but they are all empty dbCreateTable(con, SQL("EXISTING_SCHEMA.iris3"), iris) dbAppendTable(con, SQL("EXISTING_SCHEMA.iris3"), iris) iris3 <- dbReadTable(con, SQL("EXISTING_SCHEMA.iris3")) queryIris3 <- dbGetQuery(con, "SELECT * FROM EXISTING_SCHEMA.iris3")   -  person drizzle123    schedule 19.03.2019
comment
Аналогичным образом я пытался использовать Id(), а не SQL(), но результат тот же. Стол пуст. dbAppendTable() на самом деле не добавляется. dbCreateTable(con, Id(schema = "EXISTING_SCHEMA", table = "iris4"), iris) dbAppendTable(con, Id(schema = "EXISTING_SCHEMA", table = "iris4"), iris) iris4 <- dbReadTable(con, Id(schema = "EXISTING_SCHEMA", table = "iris4"), iris) queryIris4 <- dbGetQuery(con, "SELECT * FROM EXISTING_SCHEMA.iris4")   -  person drizzle123    schedule 19.03.2019
comment
Как ни странно, у меня возникает похожая проблема, даже когда я пытаюсь работать с таблицами в схеме по умолчанию. dbAppendTable() по-прежнему не добавляется. dbCreateTable(con, "iris2", iris) dbAppendTable(con, "iris2", iris) iris2 <- dbReadTable(con, "iris2") queryIris2 <- dbGetQuery(con, "SELECT * FROM iris2")   -  person drizzle123    schedule 19.03.2019