无法从Shinyapps.io连接到Microsoft Azure

时间:2019-06-07 00:18:11

标签: r azure shiny odbc shinyapps

我构建了一个Rshiny应用程序,该应用程序从Microsoft Azure中提取数据。当我在连接字符串中使用“ SQL Server”驱动程序时,我的应用程序在本地运行,但是当我在应用程序Shinyapps.io上发布该应用程序时,该应用程序无法运行。 根据{{​​3}}的建议,当我在Shinyapps.io上发布时,我一直试图使用“ FreeTDS”驱动程序与Azure连接,但是我没有任何运气。

这是我的连接字符串:

con <- dbConnect(odbc::odbc(),
                 Driver = "FreeTDS",
                 Server = "servername", 
                 Database = "databasename",
                 Uid = "uid",
                 Pwd = "pwd",
                 Port = 1433,
                 TDS_Version = 9.0)

使用“ FreeTDS”驱动程序时,我收到以下错误消息:

Error in value[[3L]](cond) : 
  nanodbc/nanodbc.cpp:950: 08001: [unixODBC][FreeTDS][SQL Server]Unable to connect to data source 

我尝试使用TDS_Version 7.0、7.2、7.4、9.0-均无效。谁能帮助我解码此错误消息?谢谢!

注意:我正在Windows 10上使用R 3.6。我已将Azure上的Shinyapps.io IP地址列入白名单,所以这不是问题。

2 个答案:

答案 0 :(得分:0)

驱动程序要求仅在连接字符串上指定DSN和PWD,而不能在DSN中指定它们。 Picture

有关更多详细信息,请参见类似的http://www.freetds.org/userguide/odbcconnattr.htm问题,该问题解决了类似的问题。

希望这会有所帮助。

答案 1 :(得分:0)

对于在本地Windows和Shinyapps.io上进行连接,这对我来说是有效的:

library(RODBC)

is_local<-Sys.getenv('SHINY_PORT')==""

dbConnector <- function(local=FALSE){
    if(local){dbConn <- odbcDriverConnect("Driver=ODBC Driver 13 for SQL Server;Server=xxx.database.windows.net,1433;Database=xxxxxxxxx;Uid=xxxx;Pwd=xxxxxxxxx;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30")
        } else {dbConn <- odbcDriverConnect("Driver=FreeTDS;TDS_Version=8.0;Server=xxxx.database.windows.net; Port=1433;Database=xxxxx;Uid=xxxxxx;Pwd=xxxxxxxxx;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30")}
}
dbConn <- dbConnector(is_local)