我有一个 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/