azure - Access 链接表 - 无需保存密码即可登录

标签 azure ms-access vba

我有一个 Access 数据库,我正在将其迁移到 Azure SQL 服务器后端。

我希望用户能够使用自定义表单来设置用于链接表的详细信息。

目前,我正在使用 AttachDSNLessTable 重新创建具有用户凭据的链接表,但这会将详细信息保存到不太安全的 Access 文件中。我考虑过在数据库关闭期间删除链接表,但如果任务被终止,连接详细信息将保留。

有没有办法可以为当前 session 的链接表指定用户名和密码?

最佳答案

如果您要从代码执行重新链接,那么您应该能够通过不指定 TableDef 对象的 dbAttachSavePWD 属性来防止保存密码当您创建链接表时。为了实现这一点,您还应该在每次重新链接之前删除 SQL 链接表,以确保您的选项得到尊重,并且 Microsoft Access 更新链接表的架构。

以下是一些示例代码,它将删除链接表并重新链接它,显示 dbAttachSavePWD 属性用法:

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strConn As String
Dim AzureTableName as String
Dim AccessTableName as String

Set db = CurrentDb()
AzureTableName = "dbo.YourTable"
AccessTableName = "YourTable"
strConn = "ODBC;Driver={SQL Server};Server=YOURSERVER\SQLINSTANCE;Database=MYDATABASE;Trusted_Connection=No;UID=MyUserName;PWD=MyPassword"
db.TableDefs.Refresh
For Each tdf In db.TableDefs
    If tdf.Name = AccessTableName Then
        db.TableDefs.Delete tdf.Name
        Exit For
    End If
Next tdf
Set tdf = db.CreateTableDef(AccessTableName)

'===============================
'If you want the password to be saved, include the following 3 lines of code
'to specify the dbAttachSavePWD attribute of the TableDef being created
'If you don't want to save the password, you would omit these 3 lines of code
'===============================
If InStr(strConn, "PWD=") Then
    tdf.Attributes = dbAttachSavePWD
End If

tdf.SourceTableName = AzureTableName
tdf.Connect = strConn
db.TableDefs.Append tdf

当您省略 dbAttachSavePWD 属性时,该表将在此 session 期间链接并可用。当您关闭 Microsoft Access 数据库并重新打开它(在运行任何重新链接代码之前)时,该表似乎仍然被链接(显示在数据库窗口中),但如果您尝试 Access 它,您将收到错误,阻止在没有正确重新链接的情况下 Access 数据。

关于azure - Access 链接表 - 无需保存密码即可登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790375/

相关文章:

Azure搜索,从SQL导入时有没有办法添加查询

wcf - 找不到 'Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityToken' token 的 token 验证器

.net - 如何修复 "The Development environment shouldn' 无法为已部署的应用程序启用”?

sql - MS Access 错误 3622 vba

c# - Azure 搜索服务顶部值超过 1000

ms-access - Access Report 不允许我引用 VBA 中的字段,除非它本身就在报告中

ms-access - sqldeveloper 4.1.1 新连接无 Access 选项卡

excel - 如何在 VBA 中使用 sql 查询并将数据从一个 Excel 工作表获取到另一个工作表?

excel - 用于将特定列的日期格式设置为 "yyyy-mm-dd"的 VBA 代码

VBA - 从单元格地址引用复选框