本地可连接Azure SQL数据库,部署到shinyapps.io后连接失败如何解决
问题原因及解决方案
报错核心原因
你本地运行环境为Windows系统,代码中使用的SQL Server Native Client 11.0是Windows平台专属的ODBC驱动,而shinyapps.io的托管服务器为Linux系统,未预装该Windows专属驱动,因此连接时无法找到对应驱动文件触发报错。
解决步骤
- 替换驱动参数:shinyapps.io的Linux环境默认预装了微软官方的ODBC Driver 17 for SQL Server,完美适配Azure SQL数据库连接需求,只需修改
Driver参数值即可。 - 修正后的连接代码如下:
con <- dbConnect( odbc(), Driver = "ODBC Driver 17 for SQL Server", Server = "xxxx.database.windows.net", Database = "hist_data", UID = "narendra", PWD = "xxx", Port = 1433 )
附加注意事项
- 需提前在Azure SQL的防火墙配置中,将shinyapps.io的所有出口IP段加入白名单,否则会出现网络连通性报错。
- 不要将数据库密码等敏感信息硬编码在代码中,建议使用shinyapps.io的环境变量功能存储敏感信息,代码中通过
Sys.getenv()函数读取对应值,避免信息泄露。
内容的提问来源于stack exchange,提问作者Narendra Sahu
相关产品推荐
相关产品推荐

