从MS Access 2007保存ODBC连接到MS SQL服务器的密码

Pas*_*day 6 ms-access odbc ms-access-2007 sql-server-2008-express

我负责将旧的Access 2007项目迁移到MS SQL Server 2008 Express.第一阶段是将所有数据从MS Access数据库移动到SQL服务器,同时在客户端保留Access表单和报表.

因此,现在移动数据,创建SQL服务器用户(仅用于访问该特定数据库),并通过ODBC连接将表链接到Access数据库.但是,应该以某种方式解决一个麻烦:Access在打开Access数据库时会定期询问用户密码.

服务器PC和客户端PC上的用户都登录到本地计算机,即他们的用户未在独立域服务器上进行验证.

我看到有几种方法可以解决这个问题:

  • 1)配置集成安全模型,以便用户可以登录,由Windows登录自动授权(即使用"可信连接").鉴于服务器PC无法从客户端PC识别用户,我不确定如何做到这一点.如果我现在尝试这样做,我会收到用户从不受信任的域连接的错误.
  • 2)在客户端存储SQL Server用户密码.不过,我不确定这是可能的.我知道在某些配置文件中保留密码,或者在应用程序配置中存储模糊处理时应考虑降低安全性,但这对于给定的设置是可接受的.
  • 3)或许还有其他一些方法如何将SQL服务器表链接到Access?

Pat*_*rez 15

最好的解决方案显然是使用Windows安全性.

如果这不合适,这里有一个可能的替代技巧,利用Access在程序关闭之前记住所有打开的连接的事实:

  1. 复制其中一个表的连接字符串
  2. 创建一个passthru查询"ptqConnect"并在其中输入任何快速SQL语句,如 SELECT 1
  3. 将连接字符串粘贴到PTQ Connect属性中,并确保添加PWD=something;其中.
  4. 在您的应用程序的启动过程中,请确保您调用该PTQ.DCount("*", "ptqConnect")会有类似的事情.

而已.由于Access会关闭打开的连接,直到您关闭它,即使关闭数据库,您的其他表现在也可以毫不费力地打开,即使链接表中没有存储密码连接字符串.
如果您不想公开包含PWD的连接字符串,您也可以从VBA启动连接并通过提供MDE或仅保护代码的密码来隐藏代码.

您可以在此处找到此行为的说明.