我最近为客户开发了一个简单的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
这不是我设置数据源的原因,我不确定为什么会发生这种情况。我是否缺少一个步骤来获取链接表定义中保存的用户名和密码?
答案 0 :(得分: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。我怀疑你能否在不使用某些代码的情况下使你的项目可靠地运行,至少可以处理链接表。我记得的方式我去了我做的路线,因为我很沮丧地使链接表保持他们的连接信息。就我而言,我没有使用Trusted Connections(或Windows身份验证)。相反,我使用的是SQL Server身份验证,在无需用户干预的情况下维护连接信息时,这种身份验证似乎不那么灵活。