我正在为报告运行VB 6应用程序。它使用System DSN在本地打印得很好。但是当我将应用程序的.exe放在RDS中时,报告不是打印系统DSN而是打印用户DSN。对于系统DSN,它显示“无法打开SQL服务器”。
我的努力 - 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服务器”相同的错误。 但是,一旦我创建用户DSN,它就可以正常工作。请帮忙。
答案 0 :(得分:1)
如果此问题是由于为一个或多个用户创建的“陈旧”不正确的虚拟化系统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?你真的是故意使用它吗?
最终修复(清理机器后)可能是: