访问链接表-登录时无需保存密码

时间:2018-08-10 16:12:29

标签: azure ms-access access-vba

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

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

当前,我正在使用AttachDSNLessTable用用户凭据重新创建链接表,但是这会将详细信息保存到访问文件中,而该文件不是很安全。我曾考虑过在数据库关闭期间删除链接表,但是如果该任务被终止,则连接细节将保留。

有没有一种方法可以仅针对当前会话为链接表指定用户名和密码?

1 个答案:

答案 0 :(得分:2)

如果您正在执行从代码的重新链接,那么您应该能够通过在创建链接表时不指定describe 'Lockable' do describe '#redis_lock' do it "delegates functionality to Redis::Lock with proper arguments" do # create an instance spy redis_lock = instance_spy("Redis::Lock") expect(Redis::Lock).to receive(:new).with('test', any_args).and_return(redis_lock) redis_lock('test', timeout: 15) do sleep 1 end expect(redis_lock).to have_received(:lock) end end end 对象的dbAttachSavePWD属性来防止密码被保存。为方便起见,您还应该每次都删除 SQL链接表,然后再重新链接它,以确保尊重您的选项,并确保Microsoft Access更新链接表的架构。

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

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 属性时,该表将在此会话期间链接并可用。当您关闭Microsoft Access数据库并重新打开它(在运行任何重新链接代码之前)时,该表似乎仍然处于链接状态(显示在数据库窗口中),但是如果您尝试访问它,则会收到错误,阻止在没有正确重新链接的情况下访问数据。