gpt4 book ai didi

r - 在 R 中使用 RODBC 连接到 Azure SQL

转载 作者:行者123 更新时间:2023-12-02 08:21:44 25 4
gpt4 key购买 nike

我正在使用 R 3.2.4 和 El captain,我想使用 R 中的 RODBC 包连接到 Azure SQL,我做了以下安装

brew install unixodbc
install.packages("RODBC",type="source")

还有

brew install freetds --with-unixodbc 

以上命令的输出:

Warning: unixodbc-2.3.4 already installed
Warning: freetds-0.95.80 already installed

但每当我尝试使用以下方式连接时:

library("RODBC")

con = odbcDriverConnect(
'driver = {SQL Server};
Server = xxxxxx;
Database = xxxxx;
User Id= xxxxx;
Password= xxxxx;')

我收到以下错误:

[RODBC] ERROR: state IM007, code 59478176, message [iODBC][Driver Manager]No data source or driver specified, dialog prohibited

最佳答案

这是我的第一篇文章,所以请原谅。我已将此设置用于 Windows 环境和使用 Active Directory 的 Azure SQL 服务器。

针对这个问题的攻略方案:

  • 首先尝试使用 SQL Server Management Studio 连接到 Azure 数据库。

  • 其次,尝试使用 odbcad32 连接到 Azure 数据库。如果可行,您可以创建一个用户 DSN,为示例起见,我将其称为 example

  • 最后在 R 中使用 odbcDriverConnect("DSN=example;")

首先尝试使用 Sql Server Management Studio 登录到 Azure 数据库。这涉及两个子步骤。

  1. 在目标数据库上,您的用户域和名称可能与您尝试连接到目标数据库的计算机上的用户域和名称不同。如果是这种情况,则使用 Windows 中的凭据管理器创建凭据。

Creating a windows credential to match your identity with that used by the Azure database

  1. 在与 SQL Server Management Studio 连接时收到的对话框中验证身份验证方法。因此,在我的机器上,我看到 Azure SQL 服务器使用了一个名为“Active Directory Integration”的东西。

Select the method of authentication that applies

其次,与其直接使用 RODBC 调用进行测试,不如使用 ODBC 管理器更方便。运行“odbcad32”。您必须选择驱动程序。

如果您想使用 Active Directory 进行身份验证,您需要“ODBC Driver 13 for SQL Server”。其他驱动程序,例如“SQL Server”和“Native Client”不支持 Active Directory。

创建一个用户 DSN 并测试它。 The end result should look like this.

如果您没有获得预期的成功,您可能会收到以下错误消息。

If this occurs simply go ahead and install the required software

继续安装登录助手。

另一个可能弹出的错误是提示您尚未安装 SQL Server 的 Active Directory 身份验证库的错误。如果您通过 SQL Server Management Studio 进行设置,那肯定不是这样。问题是 odbcad32 找不到 adalsql.dll。解决方案是添加一些注册表项。

Which registry entries to add

附录:下面有些人注意到他们使用 11.0 驱动程序而不是 13.0 驱动程序。他们是完全正确的,但那是因为他们使用用户/密码身份验证。如果您的服务器使用事件目录集成,您确实需要 13.0 或更高版本的 ODBC 驱动程序。

关于r - 在 R 中使用 RODBC 连接到 Azure SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36639962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com