![](/img/trans.png)
[英]Deploying shiny app made with golem to shinyapps.io gives Error
[英]Deploying shiny R app to shinyapps.io gives SQL connectivity error for the connection string
嗨,我正在使用此連接字符串部署到 shinyapps.io,但它從不連接
con <- DBI::dbConnect(odbc::odbc(),
Driver = "SQLServer",
Server = "server",
Database = "db",
UID ="user",
PWD="pass",
Port = 1433)
它給出了這個錯誤:
Error in value[[3L]](cond) :
nanodbc/nanodbc.cpp:1021: 00000: [RStudio][SqlServer] Failed to locate Server/Instance Specified.
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
這里可能存在多個問題。
首先,您可能需要將 shinyapps.io 的 IP 地址列入白名單,完整列表可在此處獲得。 如果您的數據庫托管在 Azure 或 AWS 上,您可以輕松地在那里進行操作,或者請您的公司管理員提供幫助。
其次,您需要明確指定shinyapps.io 應該使用哪些驅動程序來訪問您的數據庫。 通常,當您從 R 本地連接到數據庫時,您指定Driver = "SQL Server"
。
但是,對於 shinyapps.io,它需要是Driver = "FreeTDS"
。
您需要設置一個函數來識別應用程序是否在本地運行,並使用相關的驅動程序。 如果是后者,您還需要指定端口和 TDS 版本,如下所示:
# Check if the app is being run locally or on the server
is_local <- Sys.getenv("SHINY_PORT") == ""
# A function to connect to the SQL database
dbConnector <- function(server, database, uid, pwd, local = TRUE, port = 1433, tds_version = 7.4) {
# Local connect
if (local) {
DBI::dbConnect(
odbc::odbc(),
Driver = "SQL Server",
Server = server,
Database = database,
UID = uid,
PWD = pwd
)
} else {
# Remote connect
DBI::dbConnect(
odbc::odbc(),
Driver = "FreeTDS",
Server = server,
Database = database,
UID = uid,
PWD = pwd,
Port = port,
TDS_Version = tds_version
)
}
}
# Connect to the SQL database
con <- dbConnector(server, database, uid, pwd, is_local)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.