我正在开发一个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?我是否必须提示用户进行连接?
答案 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。