首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统DSN在所有用户的远程桌面服务器(RDS)中都不工作

问系统DSN在所有用户的远程桌面服务器(RDS)中都不工作
EN

Stack Overflow用户
提问于 2013-06-21 10:45:07
回答 1查看 2.5K关注 0票数 0

我正在运行一个用于报表的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,它就工作得很好。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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呢?你真的是故意使用它的吗?

最终的解决方案(在清理机器之后)可能是:

  • 完全停止使用DSN。它们已经被弃用了很长一段时间,这就是为什么我们有无DSN的连接字符串。当硬编码连接不实用时,这些文件很容易安全地存储在INI文件等位置。
  • 处理你的程序中的应用程序问题,然后添加清单,以便它们在“UDL files感知”模式下运行,而不是在遗留模式下运行。这就避免了这类令人困惑且难以修复的灾难。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17226946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档