我想在连接到DB2数据库时使用可信连接。据我们所知,它应该是可能的......但我很难找到如何做到这一点的信息。
当我提供我的pwd和uid但不提供可信连接时,下面的代码可以正常工作。
我的问题是,当我们认为我们可以使用可信连接时,我们是错的,这就是为什么它失败或语法错误而且“可能”用正确的语法成功了?
我在寻找SQL-Server时得到了大量的结果,但DB2更像是一个黑盒子......
代码:
library(RODBC)
kSysName <- "MySys"
kDbName <- "MyDB"
contst <- odbcDriverConnect("Driver=iSeries Access ODBC Driver;
System = kSysName; Database=kDbName;
Trusted_Connection = Yes")
错误代码:
错误:状态28000,代码8015
这有效:
uid <- "MyUserName"
pwd <- "MyPwd"
contst <- odbcDriverConnect("Driver=iSeries Access ODBC Driver;
System = kSysName; Database=kDbName;
uid = uid; pwd = pwd")
编辑:我们在这个应用程序的iSeries / IBM上,其他东西使用SQL-Server
答案 0 :(得分:1)
IBM用于trusted connection
的术语是single sign-on
。在使用IBM i进行single sign-on
设置后,您将能够通过ODBC使用Windows登录来访问DB2。这就是Windows和Active Directory所发生的事情。在你这样做之前,IBM我没有什么可信任的。这是一本手册,可以更详细地解释它:
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzamz/rzamzpdf.pdf
答案 1 :(得分:1)
Trusted_Connection
是DB2 Connect驱动程序关键字。 IBM i Access ODBC驱动程序不支持它。如果要使用IBM i Access ODBC驱动程序在没有用户名/密码的情况下进行连接,则需要使用Kerberos。您可以使用ODBC DSN属性中的SIGNON=4
或连接字符串(例如
contst <- odbcDriverConnect("Driver=iSeries Access ODBC Driver;
System = kSysName; Database=kDbName;
SIGNON=4")
IBM i Access ODBC驱动程序连接关键字在此处记录:https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzaik/connectkeywords.htm
要设置Kerberos,请参阅jmarkmurphy的答案中的PDF。