有没有办法以编程方式发现 ODBC 连接的命名参数?
例如,使用“ODBC Driver 17 for SQL Server”,ODBC 数据源管理器(在 Windows 中)允许使用“登录 ID”和“密码”进行身份验证,但是在以编程方式连接时,我们需要分别使用uid=和pwd=。这两个配置点在配置文档(例如https://db.rstudio.com/databases/microsoft-sql-server/)中明确列出,但驱动程序支持的其他几个配置选项较少或不- 记录。
(对于 SQL Server,还有更多文档,包括https://docs.microsoft.com/en-us/sql/connect/odbc/windows/driver-aware-connection-pooling-in-the-odbc-driver-for -sql-server?view=sql-server-ver15,列出了其他几个参数(尽管不是它们可能的值)。这适用于这个驱动程序,但由于此页面尚未针对驱动程序 17 更新,我们必须假设所有选项不变。)
可以通过编程方式了解哪些驱动程序可用,以及哪些预定义数据源可用:
odbc::odbcListDrivers()
# name attribute value
# ...truncated...
# 33 ODBC Driver 17 for SQL Server UsageCount 1
# 34 ODBC Driver 17 for SQL Server APILevel 2
# 35 ODBC Driver 17 for SQL Server ConnectFunctions YYY
# 36 ODBC Driver 17 for SQL Server CPTimeout 60 …Run Code Online (Sandbox Code Playgroud) 我继续阅读的DBI/ODBC速度比快RODBC,因此我尝试如下:
require(DBI);require(odbc)
con <- DBI::dbConnect(odbc::odbc(), dsn = 'SQLSERVER1', database = 'AcumaticaDB')
Run Code Online (Sandbox Code Playgroud)
我可以成功连接到DSN,但执行以下查询:
rs <- dbGetQuery(con, "SELECT * FROM inventoryitem")
dbFetch(rs)
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
result_fetch(res @ ptr,n,...)中的错误:nanodbc / nanodbc.cpp:3110:07009:[Microsoft] [用于SQL Server的ODBC驱动程序13]无效的描述符索引
我究竟做错了什么 ?请,没有RODBC解决方案。谢谢!