【问题标题】:Script to set linked tables doesn't save username and password设置链接表的脚本不保存用户名和密码
【发布时间】:2013-06-21 21:44:20
【问题描述】:

我最近为客户开发了一个简单的 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

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

【问题讨论】:

    标签: ms-access vbscript odbc ms-access-2010


    【解决方案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 身份验证,它在无需用户干预的情况下维护连接信息时似乎不太灵活。

    【讨论】:

    • 谢谢。如果是这种情况,我可以选择重置连接信息,因为只有 5 个表可以使用。我还使用 VBscript 来下载和启动数据库,所以我可以从那里执行此操作。我一定会为此做好准备。我通常不会在没有代码的情况下进行开发,但这次我很愚蠢地给了我的客户选择,没想到她会去做。 :-\
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多