到 db2 的可信连接 RODBC - 语法

Trusted connection RODBC to db2 - syntax

我想在连接到我们的 DB2 数据库时使用可信连接。据我们所知,这应该是可能的……但我很难找到关于如何去做的信息。

当我提供我的 pwd 和 uid 但不是受信任的连接时,下面的代码有效。

我的问题是,我们认为我们可以使用可信连接是不是错了,这就是它失败的原因,或者是语法错误,"might" 使用正确的语法成功?

我在寻找 SQL-Server 时得到了很多结果,但 DB2 更像是一个黑盒子...

代码:

library(RODBC)

kSysName <- "MySys"
kDbName <- "MyDB"

contst <- odbcDriverConnect("Driver=iSeries Access ODBC Driver;
                            System = kSysName; Database=kDbName; 
                            Trusted_Connection = Yes")

错误代码:

ERROR: state 28000, code 8015

有效:

uid <- "MyUserName"
pwd <- "MyPwd"
contst <- odbcDriverConnect("Driver=iSeries Access ODBC Driver;
                             System = kSysName; Database=kDbName; 
                             uid = uid; pwd = pwd")

编辑:我们正在 iSeries/IBM 此应用程序,其他内容使用 SQL-Server

IBM 对 trusted connection 使用的术语是 single sign-on。一旦您 single sign-on 设置了 IBM i,您将能够使用您的 windows 跨 ODBC 登录来访问 DB2。 Windows 和 Active Directory 就是这样。在您这样做之前,IBM i 没有什么值得信任的。这是一个更详细解释它的手册:

https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzamz/rzamzpdf.pdf

Trusted_Connection 是 DB2 Connect 驱动程序关键字。 IBM i Access ODBC 驱动程序不支持它。如果您想在没有 username/password 的情况下使用 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。