我在Windows 2003上运行的ASP.NET应用程序需要与驻留在大型机上的DB2数据库进行通信。我们在服务器上安装了DB2 Client驱动程序v9.5,以便应用程序可以执行连接并使用数据库。连接到数据库的连接字符串包含用户名和密码,它不是可信连接。
要明确的是,我们使用的是DB2 .NET提供程序,而不是OLE DB,ODBC等。
我们注意到的是,当ASP.NET应用程序尝试与DB2建立第一个连接时,需要很长时间,大约20秒。在与我们的一位常驻DBA交谈之后,他们说这可能是因为DB2驱动程序正在尝试使用Active Directory来验证用于连接数据库的用户帐户。
他们的解决方案是在Win2003服务器上创建一个本地用户帐户,其名称与用于建立连接的用户帐户相同。本地用户帐户不必是任何acl组的成员,可以禁用它。
我尝试了这个解决方案,令我惊讶的是,它确实有效。连接是在几毫秒内完成的。我关心的是这个“功能”似乎是DB2驱动程序中的一个缺陷,并且该驱动程序的任何新版本实际上都可以阻止它再次运行。
有没有人知道我们可以设置的DB2驱动程序中是否存在实际设置,因此它不会尝试使用Active Directory进行身份验证?我觉得使用这个设置更舒服,而不是依赖于我认为是他们认证算法的缺陷。
由于
顺便说一句,在服务器故障上提出同样的问题,然而,没有人能够在那里回答。答案 0 :(得分:1)
DB2没有“仅限数据库”用户标识的概念,并且总是使用操作系统来执行身份验证。如果通过Active Directory进行操作系统身份验证,那么DB2也将进行身份验证。
我认为您的DBA通过更改操作系统中的设置/帐户为您提供了正确的解决方案,以便更轻松地进行身份验证。
我认为这不是司机的缺陷。
答案 1 :(得分:1)
我们的DBA刚刚找到了合适的解决方案,并且无需添加本地用户即可运行。
基本上,当您在DB2 Application服务器上编目连接时,您必须指定类似“Authentication Server”的内容。这可以防止DB2驱动程序针对Active Directory进行身份验证。
我知道答案很模糊,但这是我能从他身上得到的最多。