我正在运行一个用于报表的VB6应用程序。它在系统DSN的本地打印效果良好。但是当我将应用程序的.exe放入RDS中时,报告不是为系统DSN打印,而是为用户DSN打印。对于系统DSN,其显示-“无法打开SQL server”。
我的努力- 1. http://social.technet.microsoft.com/Forums/windowsserver/en-US/bb2ced17-9dd3-40e4-b5b6-dd773ee7001c/system-dsn-on-rds-server我尝试使用WindowsDir\SysWOW64\odbcad32.exe创建一个32位的DSN,但对我不起作用。
2.http://www.tek-tips.com/viewthread.cfm?qid=341776我尝试更改以管理员身份登录的系统DSN的权限,并为使用regedt32的用户提供完全权限。但是仍然会出现“无法打开SQL server”的错误。但是一旦我创建了用户DSN,它就工作得很好。请帮帮忙。
发布于 2013-06-24 03:42:32
如果此问题是由于为一个或多个用户创建的“过时”不正确的虚拟化系统DSN造成的,那么更改实际系统DSN将无关紧要。在这些用户的遗留模式下运行的程序将继续看到他们的虚拟化副本。
系统DSN存储在以下位置:
HKEY_LOCAL_MACHINE\Software\Odbc\Odbc.ini\Odbc Data sources
..。但虚拟化的条目最终位于以下位置:
'HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\Odbc\Odbc.ini\Odbc Data sources
..。根据Registry Virtualization的说法。
因此,要清除虚拟注册表项(删除它们)以揭开真实DSN的掩码,可能需要大量的注册表操作。最容易做到这一点的方法是创建一个脚本或小程序,该脚本或小程序在每个损坏的用户ID下运行一次。
或者只是重新格式化启动驱动器并重新安装Windows!
这甚至没有涉及到WOW64注册表重定向可能出现的问题,这是一个不同但相似的问题。为什么不停止使用陈旧笨拙的ODBC呢?你真的是故意使用它的吗?
最终的解决方案(在清理机器之后)可能是:
https://stackoverflow.com/questions/17226946
复制相似问题