0

我最近为客户开发了一个简单的 Access 2010 数据库。它是在没有 VBA 的情况下设计的,仅使用宏,因此不会触发任何安全警告。唯一的问题是它使用连接到 SQL Server Express 数据库的 ODBC 链接表,并且我需要一种方法来重置表的连接字符串,一旦安装在我的客户端计算机上。

我开发了一个简单的 VBscript,它遍历链接的表,将它们的名称复制到字典中,然后使用新的数据源重新创建表:

For Each key In tcmw.Keys
    Set td = db.CreateTableDef(key)
    td.Connect = "ODBC;Description=xxx;DRIVER=SQL Server;SERVER=xxx\SQLEXPRESS;DATABASE=TCM;User=xxx;Password=xxx;"
    td.SourceTableName = key
    db.TableDefs.Append td
Next

该脚本似乎可以工作,但是当我将鼠标悬停在链接表上时,我看到了以下数据源。它有Trusted_Connection=Yes而不是指定的用户名和密码:

ODBC;Description=xxx;DRIVER=SQL Server;SERVER=xxx\SQLEXPRESS;Trusted_Connection=Yes

这不是我将数据源设置为的,我不确定为什么会发生这种情况。我是否缺少将用户名和密码保存在链接表定义中的步骤?

4

1 回答 1

1

我不确定,但我认为 Access 不会将凭据保存在连接信息中。我正在使用带有 Access 2010 前端的 SQL Server 2008,这是我在悬停时看到的连接信息:

ODBC;Driver=SQL Server Native Client 10.0;SERVER=localhost\SSE2008;APP=Microsoft Office 2010;Database=MyDatabaseName;;TABLE=dbo.SQLTableName

这可能不适用于真正的大型项目,但是当用户打开删除所有 SQL Server 链接表并使用我存储在本地表中的信息重新创建它们的前端时,我实际上运行代码。我对它的工作方式非常满意,但这个项目只有 22 张桌子。

我看到你提到你在项目中只使用宏而不使用 VBA。我怀疑您是否能够在不使用某些代码的情况下使您的项目可靠地工作,至少可以处理您的链接表。我记得我走这条路的方式是因为我很沮丧让链接表维护它们的连接信息。就我而言,我没有使用受信任的连接(或 Windows 身份验证)。相反,我使用的是 SQL Server 身份验证,它在无需用户干预的情况下维护连接信息时似乎不太灵活。

于 2013-06-21T03:06:31.817 回答