从R连接Azure数据库时遇Encrypt属性错误,请求技术支持
解决R连接Azure SQL数据库时的Encrypt属性错误问题
我在Azure上拥有一个数据库,用于从R连接该数据库的原始连接字符串:
Server=tcp:biod.database.windows.net,1433;Initial Catalog=*******;Persist Security Info=False;User ID=****;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
使用RODBC包的连接代码:
library(RODBC) library(rlang) ## 连接SQL Server conn <- odbcDriverConnect(connection = paste0("Driver={SQL Server Native client 11.0}; server=tcp:biod.database.windows.net,1433;Initial Catalog=******;Persist Security Info=False;User ID=****;Password=*****;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"))
遇到的错误信息:
[RODBC] ERROR: state 08001, code 0, message [Microsoft][SQL Server Native Client 11.0]Invalid value specified for connection string attribute 'Encrypt'
解决方案
问题根源是SQL Server Native Client 11.0驱动不支持Encrypt=True这种布尔值格式,该驱动版本需要使用yes/no字符串格式来指定加密属性。
修改后的连接代码:
library(RODBC) library(rlang) ## 连接SQL Server conn <- odbcDriverConnect(connection = paste0("Driver={SQL Server Native Client 11.0}; server=tcp:biod.database.windows.net,1433;Initial Catalog=******;Persist Security Info=False;User ID=****;Password=*****;MultipleActiveResultSets=False;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"))
注意事项:
- 同时将
TrustServerCertificate=False改为TrustServerCertificate=no,保持与驱动兼容的参数值格式 - 若环境允许,建议升级至ODBC Driver 17 for SQL Server,该驱动支持
Encrypt=True这类标准布尔值格式,对Azure SQL的兼容性更强
内容的提问来源于stack exchange,提问作者mapvin vin
相关产品推荐
相关产品推荐

