我负责将旧的 Access 2007 项目迁移到 MS SQL Server 2008 Express。第一阶段是将所有数据从 MS Access 数据库移动到 SQL Server,同时将 Access 表单和报告保留在客户端。
因此,现在数据已移动,创建了 SQL Server 用户(仅用于访问该特定数据库),并且表通过 ODBC 连接链接到 Access 数据库。然而,有一个麻烦需要以某种方式解决:在打开 Access 数据库时,Access 会定期询问用户密码。
服务器PC和客户端PC上的用户均登录到其本地计算机,即其用户未在独立域服务器上进行验证。
我看到有几种方法可以解决这个问题:
- 1) 配置集成安全模型,以便用户可以登录,并由其 Windows 登录自动授权(即使用“可信连接”)。鉴于服务器 PC 无法识别客户端 PC 上的用户,我不确定如何做到这一点。如果我现在尝试执行此操作,则会收到错误消息,表明用户正在从不受信任的域进行连接。
- 2)在客户端存储SQL Server用户密码。不过,我不确定这是否可能。我知道将密码保留在某些配置文件中或在应用程序配置中进行混淆存储应被视为降低安全性,但这对于给定的设置是可以接受的。
- 3)也许有其他方法如何将SQL服务器表链接到Access中?
最好的解决方案显然是使用 Windows 安全性。
如果这不合适,这里有一个可能的替代技巧,利用 Access 记住所有打开的连接直到程序关闭的事实:
- 复制其中一张表的连接字符串
- 创建一个 passthru 查询“ptqConnect”并在其中输入任何快速 SQL 语句,例如
SELECT 1
- 将连接字符串粘贴到 PTQ Connect 属性中,并确保添加
PWD=something;
in it.
- 在应用程序的启动过程中,请确保调用该 PTQ。就像是
DCount("*", "ptqConnect")
会做。
就是这样。由于 Access 会记住打开的连接,直到您关闭它为止,因此即使您关闭数据库,您的其他表现在也将毫不费力地打开,即使链接表连接字符串中没有存储密码也是如此。
如果您不想公开包含 PWD 的连接字符串,您也可以从 VBA 启动连接并通过提供 MDE 或仅用密码保护代码来隐藏代码。
您可以找到此行为的解释here http://blogs.office.com/2011/04/08/power-tip-improve-the-security-of-database-connections/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)