You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure交互式认证时R Markdown编译失败求助

问题

我需要通过多因素认证连接SQL数据库,以下代码在普通R脚本中可正常运行:

server <- "xxx"
database <- "yyy"
user <- "zzz"

conn <- dbConnect(odbc(),                 
Driver = "ODBC Driver 17 for SQL Server",                 
Server = server,                 
Database = database,                 
UID = rstudioapi::askForPassword(user),                 
Authentication = "ActiveDirectoryInteractive",                 
Port = 1433)

但在使用R Markdown生成报告时,编织文件初始看似正常,输入密码后编译停滞在18%,无报错但始终无法完成编译。

解决方案

方法1:预先获取AD认证token,采用非交互式连接

R Markdown编织过程属于非交互式环境,ActiveDirectoryInteractive依赖弹出的交互式验证窗口完成MFA,这会导致编织进程阻塞。可以通过AzureAuth包提前获取认证token,再用token建立连接:

library(AzureAuth)
library(odbc)

# 获取AD认证token(首次运行会弹出验证窗口完成MFA)
token <- get_azure_token(
  resource = "https://database.windows.net/",
  tenant = "你的租户ID",
  app = "你的客户端ID",
  auth_type = "authorization_code"
)

# 使用token连接数据库
server <- "xxx"
database <- "yyy"
conn <- dbConnect(odbc(),
  Driver = "ODBC Driver 17 for SQL Server",
  Server = server,
  Database = database,
  UID = "zzz",
  Authentication = "ActiveDirectoryAccessToken",
  AccessToken = token$credentials$access_token,
  Port = 1433
)

方法2:强制编织时使用交互式会话

在R Markdown文档开头添加以下设置,让编织过程启用交互式模式,确保MFA验证窗口能正常弹出:

knitr::opts_chunk$set(echo = TRUE, eval = interactive())

注意:这种方法需要手动参与验证流程,不适合自动化批量编织场景。

方法3:升级ODBC驱动并调整认证方式

升级到ODBC Driver 18 for SQL Server,尝试使用ActiveDirectoryPassword认证方式(如果你的MFA支持密码+二次验证的组合):

server <- "xxx"
database <- "yyy"
user <- "zzz"

conn <- dbConnect(odbc(),                 
Driver = "ODBC Driver 18 for SQL Server",                 
Server = server,                 
Database = database,                 
UID = user,                 
Authentication = "ActiveDirectoryPassword",                 
Password = rstudioapi::askForPassword("输入密码"),                 
Port = 1433,
TrustServerCertificate = TRUE
)

内容的提问来源于stack exchange,提问作者Pernille Draborg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:03:19