r - 如何使用 R 从托管在 AWS ubuntu 服务器上的 Rstudio Connect 访问托管在 Azure Windows VM 上的 SQL Server 数据库?

标签 r sql-server azure rstudio-connect

我无法从 RStudio Connect 服务器访问 Azure Windows VM 上托管的 SQL Server 数据库。 SQL Server 配置为允许远程连接。我尝试了以下 R 代码,但没有成功。我还查看了该论坛上的其他帖子。但是,他们都没有解决这个具体情况。

odbc.ini文件内容:

[dbname]
Driver = /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1
Server = azure_wvm_name.corp.mycompany.com
ServerSPN = MSSQLSvc/azure_wvm_name.corp.mycompany.com:1433
Database = sqldb
Port = 1433
UID =  mycompany\rkahn
PWD = myPassword
Trusted_Connection = yes
Encrypt = yes
TrustServerCertificate = yes
Kerberos = Yes

telnet ip_address 1433,如“AlwaysLearning”建议'有效。

有人可以让我知道我的代码中缺少什么吗?

library(odbc)
library(DBI)

UserId <- 'mycompany\rkahn'
UserPassword <- 'myPassword'
dbname <- 'sqldb'

sqlsrvcon <- dbConnect(odbc(),
                 Driver = "ODBC Driver 18 for SQL Server",
                 Server = "azure_wvm_name.corp.mycompany.com",
                 Database = dbname,
                 UID = UserId,
                 PWD = UserPassword,
                 Port = 1433)

我收到此错误消息: 错误:nanodbc/nanodbc.cpp:1021: 00000: [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18] 登录超时已过期 [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]MAX_PROVS:连接字符串无效 [87]。 [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]与 SQL Server 建立连接时发生网络相关或特定于实例的错误。

我能够通过 ODBC DSN 连接到 SQL Server

ubuntu@ip-xxx-xx-xx-xx:~$ isql -v dsnName

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

但是当我尝试使用 R 连接时

con <- DBI::dbConnect(odbc::odbc(), "dsnName")

我收到此错误: 错误:nanodbc/nanodbc.cpp:1021: 00000: [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序:[错误:1416F086:SSL 例程:tls_process_server_certificate :证书验证失败:自签名证书] [Microsoft][ODBC Driver 18 for SQL Server]客户端无法建立连接

最佳答案

最后这对我有用:

library(odbc)
library(DBI)

UserId <- 'mycompany\rkahn'
UserPassword <- 'myPassword'
dbname <- 'sqldb'

sqlsrvcon <- dbConnect(odbc(),
                 Driver = "/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1",
                 Server = "azure_wvm_name.corp.mycompany.com",
                 Database = dbname,
                 UID = UserId,
                 PWD = UserPassword,
                 Encrypt="yes",
                 TrustServerCertificate="yes",
                 Port = 1433)

关于r - 如何使用 R 从托管在 AWS ubuntu 服务器上的 Rstudio Connect 访问托管在 Azure Windows VM 上的 SQL Server 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71978607/

相关文章:

r - 如果每列分别满足条件,则将值设置为零

css - 更改 Shiny 小部件的背景和字体颜色

json - Azure Function 不在 Azure 中执行(无错误)

azure - 在 OpenAI Azure 上找不到 GPT3.5-Turbo-16k

Azure 数据资源管理器 ODBC 外部表 - Tableau

r2dtable 列联表过于集中

r - quantStrat 无法识别列名

sql-server - 将SQL CASE WHEN语句加组语句转换为LINQ

sql-server - 更改大表PK列数据类型

c# - SQL参数化查询。添加不必要的参数