ODBC SQL驱动程序锁定到单用户在Windows 2008 x64

问题描述:

我有两个不同的C++ ISAPI DLL,已经设置和配置IIS 7用作Web应用程序。他们使用在不同域用户帐户下运行的不同应用程序池进行设置。我遇到的问题是,一旦某个应用程序连接到SQL,另一个应用程序就无法连接。代码在应用程序如何建立连接之间没有区别 - 它们都使用相同的参数调用相同的静态库方法。获得第二个应用程序连接到SQL的唯一方法是将其应用程序池用户设置为与第一个应用程序相同的域用户,反之亦然(这排除了一个用户权限不足)。我重复检查了SQL驱动程序的ODBC连接池已打开,并且我监视了ODBC数据源管理员跟踪日志。如果我在两个应用程序池在不同用户下运行时监视跟踪日志,则SQLAllocHandle已成功显示,以便在跟踪中进入和退出,但SQLDriverConnect只会成功调用第一个应用程序时进入和退出。当第二个应用程序使用完全相同的参数调用SQLDriverConnect时,跟踪仅显示输入,调试日志也指示此函数调用永不返回。数据包跟踪表明第二个应用程序甚至不会尝试连接到SQL服务器。但是,第一个应用程序将连接正常,并且在SQL中运行一个分析器将显示适当的SQL语句执行。这些应用程序在IIS 6和Windows XP驱动程序的旧版本的Windows 2003 x86上使用相同的多用户配置运行得很好。ODBC SQL驱动程序锁定到单用户在Windows 2008 x64

我希望有一个简单的ODBC设置,我错过了,但我的搜索出现空。任何人可以提供帮助将不胜感激,在此先感谢。

经过一个多星期的故障排除和与Microsoft的交流,我们终于找到了解决方案。根据微软告诉我们的情况,他们改变了流程在2003年到2008年间互相交互的方式,并使用我们的静态链接库,就像我们在不同用户下运行时导致的锁定问题一样。当我们在调用ODBC连接器之前引入一个新线程时,一切正常。