dbConnect работает в Rstudio.exe и RGui.exe, но не работает как исполняемый файл в RScript.exe
Я пытаюсь создать файл RScript, который можно запускать как исполняемый файл. У меня есть код R, который подключается к базе данных Microsoft Azure SQL Server, которая использует аутентификацию пароля активного каталога, запрашивает базу данных и пишет отчет csv. Я создал DSN для базы данных и использовал следующий код для успешного подключения к базе данных как в 32-битной, так и в 64-битной среде RStudio.exe и RGui.exe:
library(DBI)
library(tidyverse)
library(profvis)
show("Library Installed...")
pause(2)
CON <- dbConnect(odbc::odbc(), "My_DSN", uid = "UserName", pwd = "Password", timeout = 10)
show("Database Connected...")
pause(2)
SQL <- "SELECT * FROM Table"
DATA <- dbGetQuery(CON, SQL)
show("Data Extracted...")
pause(2)
NAME = unique(DATA$Name)
DATA.INDIVIDUAL = list()
for (i in NAME){
DATA.INDIVIDUAL[[i]] <- DATA %>% filter(Name == i) %>% select("Field1", "Field2", "Field3")
write.csv(DATA.INDIVIDUAL[[i]], paste("C:/My Documents/", i, "/Report.csv", sep = ""), row.names = FALSE)
show(paste("Exported",i))
pause(2)
}
Я также подключился, явно назвав базу данных с помощью
library(DBI)
con <- dbConnect(odbc::odbc(), uid = "UserName", pwd = "Password", Driver = "ODBC Driver 17 for SQL Server", Server = "ServerName", Database = "DBName", Authentication = "ActiveDirectoryPassword")
show("Database Connected...")
Однако, когда я использую RScript.exe для запуска одного и того же кода (обе версии), он печатается в командной строке RScript (до вывода вывода «База данных подключена ...»), и приложение завершается без завершения остальной части моего кода.. Почему Rstudio и RGui соединяются, а RScript не соединяется? Почему нет ошибки, просто
NULL
напечатаны?
Ценю любую помощь!
1 ответ
На будущее я нашел причину. Проблема в драйвере odbc; в приложениях без пользовательского интерфейса CoInitialize не вызывается.