可信连接RODBC到db2 - 语法

时间:2017-08-16 07:40:47

标签: r db2 ibm-midrange rodbc db2-400

我想在连接到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

2 个答案:

答案 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。