我正在尝试使用Azure SQL Datawarehous
连接到RStudio
e。在仓库上设置的唯一身份验证是Active Directory密码身份验证。我尝试使用以下连接字符串。
connectionString ="数据源= abc.database.secure.windows.net;身份验证= Active Directory密码; 初始目录= dbo; UID ='用户名&#39 ;; PWD =;
它以"neither DSN nor SERVER keywork supplied"
失败。我不想建立一个DSN,因为我正在构建一个前端应用程序,它必须是可移植的。
我也尝试过RODBC ..但无法获得有关Active Dir身份验证的帮助。
答案 0 :(得分:2)
对于集成的AD身份验证,连接字符串应如下所示:
Driver={ODBC Driver 13 for SQL Server};Server=tcp:{full qualified server name},1433;Database={dbname};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryIntegrated
对于AD passoword身份验证:
Driver={ODBC Driver 13 for SQL Server};Server=tcp:{full qualified server name},1433;Database={dbname};Uid={your_user_name};Pwd={your_password_here};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword
答案 1 :(得分:0)
您是否下载了ADALSQL.DLL库https://www.microsoft.com/en-us/download/details.aspx?id=48742?需要连接到Azure AD。另外要仔细检查你使用的ODBC驱动程序是13.1 - 正确吗?
答案 2 :(得分:0)
如果上面提到的建议(ADALSQL.dll下载)无法解决您的问题,请为“使用SQL DB进行Azure AD身份验证”创建客户案例并将其报告给SQL客户服务。
答案 3 :(得分:0)
在经历了几次僵局之后,我终于走到了尽头。关键步骤是将ODBC驱动程序更新为ODBC驱动程序17。以下使用Azure Active Directory身份验证进行工作,该身份验证与使用者密钥/消费者机密稍有不同,但可能会达到相同的结果(即不使用SQL密码进行身份验证)。
library(DBI)
server <- "yourserver.database.windows.net"
database = "database-name"
con <- DBI::dbConnect(odbc::odbc(),
UID = rstudioapi::askForPassword("username"),
Driver="ODBC Driver 17 for SQL Server",
Server = server, Database = database,
Authentication = "ActiveDirectoryInteractive")