MS Access不再在属性表中显示完整的ODBC连接字符串

时间:2014-09-17 14:20:38

标签: mysql ms-access odbc

在重组后测试Access文件时,我经常翻转ODBC连接字符串的UID和PWD的凭据,但我最近做的事情导致Access不再显示完整的连接字符串。

我有4个生产传递查询和1个测试传递查询。测试传递查询显示完整的ODBC连接字符串,但4个生产传递查询仅显示ODBC;DSN=schema_name;。我尝试重新建立ODBC连接:

a) I click the three dots b) The "Select Data Source" box opens c) I select the data source d) I choose "Yes" to save the password in the connection string.

然而,在此之后它仍然只显示缩写的连接字符串。如果让MS Access显示完整的连接字符串,我需要做什么?

连接字符串UID和PWD是否始终与ODBC数据源配置框中保存的字符串相匹配?

  • 使用Access 2010
  • 以.mdb(Access 2000)格式保存
  • 用户DSN:MySQL ODBC 5.3 Unicode驱动程序
  • 系统DSN:MySQL ODBC 5.3 ANSI驱动程序

1 个答案:

答案 0 :(得分:1)

保存UID /密码取决于您首次创建表链接的方式。如果您在连接字符串中选中了“保存密码”,则将保存任何重新链接并包括uid /密码,并且将在字符串中清晰可见。

如果您没有选中“保存密码”框,则重新链接,即使您包含uid /密码,它也不会保存在连接字符串中。因此,如果您尚未登录该服务器,则打开此类链接表将导致登录或odbc连接错误。但是,如果您登录到该表,则访问会缓存该会话的uid /密码。

因此,您创建链接的“方式”将确定是否保存了uid /密码。因此,控制此设置的tabledef属性为:

MyTableDef.Attributes = DB_ATTACHSAVEPWD

作为一般规则,最好不要在这些链接中包含uid /密码。最好在应用程序启动时执行登录。这也意味着您可以使用不同的uid /密码而不必重新链接表。我不认为querydef有这个设置,但是如果用户已经登录到数据库,它们也可以在没有uid /密码的情况下工作。

因此,要回答您的问题:存在一个选项(属性)设置,该设置将导致保存或不保存uid /密码。当INCLUDE连接字符串中的uid /密码时,此选项会覆盖原因 - 如果表def没有允许在连接字符串中保存uid /密码的上述属性设置,它将被删除而不保存。

这是一篇很棒的文章,解释了如何让所有表连接并工作,而无需在连接中包含uid /密码。 “技巧”只涉及在应用程序开始时执行登录。

电源提示:提高数据库连接的安全性 http://blogs.office.com/b/microsoft-access/archive/2011/04/08/power-tip-improve-the-security-of-database-connections.aspx

跟进: 作为使用Access与SQL Server的一般规则,您使用链接表。然后,您可以像往常一样继续使用Access。因此,您可以简单地将表单绑定到该链接表到SQL服务器,从而使表单和报表无需编写任何代码即可运行。因此tableDefs(链接的)和querydef都有一个连接属性。

看起来querydef没有我在上面概述的“保存密码”属性。这可能意味着如果您指定DSN,则不会保存密码等,因为它在DSN中是预期的。因此,尝试删除DSN部分 - 通过这样做,您创建的DSN连接较少。退出DSN部分应该允许您在字符串中保存/指定uid /密码。如果使用文件或机器DSN(一个使用文件,另一个使用注册表),我也会检查可能的不同行为。