使用Windows凭据连接到DB2

时间:2016-02-17 14:43:13

标签: sql-server vba db2 ado

我正在开发一个VBA项目,我需要连接到这两个项目以及SQL-和DB2-Database。我在两种情况下都使用ADODB连接。 SQL工作正常,并使用Windows凭据。我可以通过传递用户名和密码来获得DB2连接,但不使用Windows凭据(它们是相同的)。请参阅连接字符串以获取示例:

此SQL连接字符串正常工作:

objConnection.connectionString = "Provider=SQLOLEDB.1; Integrated Security=SSPI; Persist Security Info=False;Data Source= " & strServer & ";Initial Catalog=" & strDatabase

只要我在open方法中传递密码,这个DB2连接字符串也可以工作:

strConnection = "Provider=IBMDADB2.1; User ID=" + nlUsername + "; Data Source=DB_" + strDatabase + "; Persist Security Info=False"
objConnection.Open(strConnection, nlUsername, nlPassword)

我想要DB2上的SQL方法 - 所以我尝试了这个, NOT 工作:

objConnection.connectionString = "Provider=IBMDADB2.1; Integrated Security=SSPI; Persist Security Info=False; Data Source=DB_" & strDatabase

是否可以在不传递用户名和密码的情况下连接到DB2?我是否必须提示用户进行连接?

1 个答案:

答案 0 :(得分:0)

我假设我们正在讨论DB2 for LUW。

执行此操作的一种简单方法是启用客户端身份验证。在DB2服务器上设置以下实例配置参数:

update dbm cfg using authentication client trust_clntauth client trust_allclnts yes

您需要重新启动实例才能使更改生效(db2stop / db2start)。

在客户端编目中使用客户端身份验证的相关数据库:

uncatalog db yourdb
catalog db yourdb at node whatever authentication client

如果数据库当前没有明确的服务器端身份验证选项,则可能不需要最后两个步骤(uncatalog / catalog)。

请注意,此类配置不是很安全,因为它允许任何Windows用户在登录Windows后无需身份验证即可连接到数据库(实际上是DB2服务器上的任何数据库)。您可能希望通过撤消PUBLIC伪组中的所有授权来加强数据库的安全性,并仅授予应用程序登录ID的特定权限。

或者,您可以启用Kerberos身份验证,但这是一个更加复杂的过程,如described in the manual

相关问题