Windows 2008 x64下ODBC SQL驱动锁定为单用户
ODBC SQL Driver Locked to Single User On Windows 2008 x64
我有两个不同的c++ ISAPI dll,它们已经设置并配置为IIS 7用作web应用程序。它们使用在不同域用户帐户下运行的不同应用程序池进行设置。我遇到的问题是,一旦其中一个应用程序连接到SQL,另一个应用程序就不能。应用程序尝试建立连接的方式在代码上没有区别——它们都使用相同的参数调用相同的静态库方法。让第二个应用程序连接到SQL的唯一方法是将其应用程序池用户设置为与第一个应用程序相同的域用户,反之亦然(这就排除了一个用户权限不足的情况)。我已经仔细检查了是否为SQL Driver打开了ODBC连接池,并且监视了ODBC数据源管理员跟踪日志。如果我在两个应用程序池在不同用户下运行时监视跟踪日志,那么在trace中,对于enter和exit, SQLAllocHandle
都显示成功,但是对于调用它的第一个应用程序,SQLDriverConnect
仅在enter和exit时显示成功。当第二个应用程序用完全相同的参数调用SQLDriverConnect
时,跟踪只显示enter,调试日志也表明该函数调用永远不会返回。数据包跟踪表明,第二个应用程序甚至从未尝试连接到SQL服务器。但是,第一个应用程序将连接良好,并且在SQL中运行分析器将显示SQL语句的正确执行。这些应用程序在IIS 6和旧版本的ODBC驱动程序下的Windows 2003 x86上使用相同的多用户配置运行得很好。
我希望有一个简单的ODBC设置,我错过了,但我的搜索是空的。任何人能提供的任何帮助都将不胜感激,提前感谢。
经过一周多的故障排除和与微软的讨论,我们终于找到了解决方案。微软告诉我们,在2003年到2008年之间,他们改变了进程之间的交互方式,使用我们的静态链接库,就像我们在不同用户下运行时那样,会导致锁定问题。当我们在调用ODBC连接器之前引入一个新线程时,一切正常。
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 在单击QT中单击图像时,尝试立即显示用户编辑操作的结果
- 无论如何,是否可以确定MFC应用程序是通过PC重新启动或用户单击应用程序快捷方式开始的
- 当用户单击QT中的QlineEdit时,如何更改Qlineed的文本
- 我需要在接受用户输入后返回 c 刺痛中的单词数
- 是否可以报告用户在 Android 应用程序中单击了哪些按钮
- 嗨,我正在尝试编码一个允许用户在Visual C 中登录的按钮,程序正在运行,但表单对话框未显示
- 如何在 Windows 资源管理器中捕获用户的左键单击?
- 当用户按 Ctrl 并单击时获取鼠标坐标
- 如何重载模板类<< cout? 轨道结帐表单/视图:用户输入>查看输入>结帐
- 如何在单选按钮分组框中获取用户的选择以进行进一步处理
- 在首次向用户显示表单之前,应用程序不会启动
- 单击按钮时,将当前位置/订单保存在QTabWidget中 - 用户设置
- MFC 单文档应用程序用户输入
- 如何告知用户单击了文件名选择对话框中的取消
- 如何在用户单击wxWidget事件时打开Web链接
- 外壳扩展DLL-如果用户在文件夹空白区域内单击,如何捕获文件夹路径
- 鼠标按下QComboBox的插槽-如果用户单击组合框,则动态填充项目
- MFC PropertyGrid将不会在用户单击时展开(已禁用)
- 用于单用户开发的Git合并/重基策略