在 R 中使用 DBI:dbConnect 连接到 SQL Server 时出现问题

问题描述 投票:0回答:2

我尝试的第一种方法有效。我首先在 Windows 上使用

my_connection_name
定义了 ODBC 连接
ODBC data source administrator
。然后我使用以下代码:

library(DBI)
library(odbc)
con <- DBI::dbConnect(odbc(),
                      dsn='my_connection_name',
                      UID = "[email protected]",
                      PWD = "mypassword")

这很好用!

但是,当我尝试在

dbConnect
函数中定义驱动程序、服务器和数据库名称时。它失败!

con <- DBI::dbConnect(odbc(),
                      Driver = "ODBC Driver 13 for SQL Server",
                      Server = 'my_server_name',
                      Database = "my_database_name",
                      UID = "[email protected]",
                      PWD = "mypassword",
                      Trusted_Connection = "yes")

我收到错误:

Error: nanodbc/nanodbc.cpp:950: 08S01: [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: An existing connection was forcibly closed by the remote host.

有趣的是,当我删除

Trusted_Connection = "yes"
时。

con <- DBI::dbConnect(odbc(),
                      Driver = "ODBC Driver 13 for SQL Server",
                      Server = 'my_server_name',
                      Database = "my_database_name",
                      UID = "[email protected]",
                      PWD = "mypassword")

我收到这样的错误消息:

错误:nanodbc/nanodbc.cpp:950: HY000: [Microsoft][SQL Server 的 ODBC 驱动程序 13][SQL Server]无法打开登录请求的服务器“company.com”。登录失败。

我之前定义 ODBC 连接时使用了相同的驱动程序、服务器和数据库名称。

我的身份验证选项是

ActiveDirectoryPassword

有谁知道这是怎么回事吗?

r sql-server odbc dbi
2个回答
3
投票

如果使用“可信连接”=“是”,则无需提供用户名和密码。您的服务帐户将用于连接到您的 sql 服务器。

con <- DBI::dbConnect(odbc(),
                      Driver = "ODBC Driver 13 for SQL Server",
                      Server = 'my_server_name',
                      Database = "my_database_name",                    
                      Trusted_Connection = "yes")

-1
投票

谢谢!我花了大约 3 天的时间才找到这个解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.