【发布时间】:2020-10-01 15:42:52
【问题描述】:
我正在尝试连接到 SQL 数据库。它通过 RODBC 包工作:
ch = odbcDriverConnect(paste0("DSN=mydns.net;database=MasterData;UID=user;PWD=pass"))
ch
RODBC Connection 1
Details:
case=nochange
DSN=mydns.net
database=MasterData
UID=user
PWD=******
如何使用 odbc 包建立连接?以下不起作用!
con = dbConnect(odbc(),
Driver = "MSODBC",
Server = "mydns.net",
Database = "MasterData",
UID = "user",
PWD = "pass",
encoding = "windows-1252",
Port = 1433)
Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Brugeren 'user' kunne ikke logge p�. [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Invalid connection string attribute.
还有:
odbc::odbcListDrivers()
name attribute value
1 PostgreSQL Description ODBC for PostgreSQL
2 PostgreSQL Driver /usr/lib/psqlodbcw.so
3 PostgreSQL Setup /usr/lib/libodbcpsqlS.so
4 PostgreSQL Driver64 /usr/lib64/psqlodbcw.so
5 PostgreSQL Setup64 /usr/lib64/libodbcpsqlS.so
6 PostgreSQL FileUsage 1
7 MySQL Description ODBC for MySQL
8 MySQL Driver /usr/lib/libmyodbc5.so
9 MySQL Setup /usr/lib/libodbcmyS.so
10 MySQL Driver64 /usr/lib64/libmyodbc5.so
11 MySQL Setup64 /usr/lib64/libodbcmyS.so
12 MySQL FileUsage 1
13 FreeTDS Description FreeTDS for MSSQL
14 FreeTDS Driver /usr/lib64/libtdsodbc.so
15 FreeTDS Setup /usr/lib64/libtdsS.so
16 FreeTDS Driver64 /usr/lib64/libtdsodbc.so
17 FreeTDS Setup64 /usr/lib64/libtdsS.so
18 FreeTDS FileUsage 1
19 FreeTDS UsageCount 1
20 MSODBC Description Microsoft ODBC Driver 13 for SQL Server
21 MSODBC Driver /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.1
22 MSODBC UsageCount 1
我也尝试过相反的过程。对于另一个数据库,我有一个 ODBC 连接,它工作正常:
con <- dbConnect(odbc(),
Driver = "MSODBC",
Server = "D.ad009.win.org",
Database = "LCA",
UID = "LCA-User",
PWD = "xxxx",
encoding = "windows-1252",
Port = 1433)
如果我使用RODBC 包的概念并创建类似ch 的东西:
ch = odbcDriverConnect(paste0("Driver=MSODBC;DSN=D.ad009.win.org;database=LCA;UID=LCA-User;PWD=xxxx"))
我也收到如下错误:
Warning messages:
1: In odbcDriverConnect(paste0("Driver=MSODBC;DSN=D.ad009.win.org;database=LCA;UID=LCA-User;PWD=xxxx")) :
[RODBC] ERROR: state 08001, code 0, message [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Neither DSN nor SERVER keyword supplied
2: In odbcDriverConnect(paste0("Driver=MSODBC;DSN=D.ad009.win.org;database=LCA;UID=LCA-User;PWD=xxxx")) :
ODBC connection failed
所以当我从 ODBC 更改为 RODBC 时,我需要考虑一些事情,反之亦然。
【问题讨论】:
-
错误
Brugeren 'user' kunne ikke logge表明您连接正常,但不允许使用您的用户名/密码。您是否联系过您的 DBA 进行权限验证? (为了这个问题,我假设您将真实用户名更改为'user'。) -
是的。我已经检查了我的用户/通行证。在那个错误消息中,我只是用“用户”替换了真实的用户名。使用相同的身份验证,我可以通过 RODBC 进行连接,但不能使用 ODBC 包!
-
进展如何?暂时没有更新。
-
@r2evans,没有进展!刚放弃!问题也与其他方式有关:这意味着我有一个到另一个数据库的 ODBC 连接,当我将它更改为 RODBC 时,我得到了错误。我也将那个问题添加到了问题中。