有没有办法判断是否有另一个Access数据库链接到我的?

时间:2011-03-18 18:21:55

标签: ms-access

我有一个旧的Access数据库,其中包含大量的查找表。据说它是一个类似的仓库,可以链接到其他一些其他部署的访问应用程序。我们想杀了它。但是,有没有办法找出目前是否有任何应用程序链接到它?

3 个答案:

答案 0 :(得分:1)

您需要所有Access应用的完整路径和文件名;这可能是不可能的。

对于那些你可以,循环遍历所有文件:

  1. 连接到每个数据库以测试链接。
  2. 遍历TestForLinkDatabase.TableDefs
  3. 中的所有表
  4. 检查每个表是否有.SourceTableName和.Connect = YourLookupTableWarehouse。我认为SourceTableName是本地表的空字符串。
  5. 跟踪#3。如果在另一个文件中找到单个实例,则可以选择停止检查其余表。
  6. 同样,它不是万无一失的,但是掌握你公司周围的所有Access应用程序是一个很好的练习。

    *代码不排除系统表。

    Private Sub CheckToSeeIfLinked()
        Dim Dbs As DAO.Database
        Dim Tdf As DAO.TableDef
        Dim Tdfs As TableDefs
    
        Dim wrk As DAO.Workspace
        Set wrk = DBEngine.Workspaces(0)
    
        Dim TestDatabaseForLinks As String
        TestDatabaseForLinks = "C:\FileNameToCheck.mdb"
    
        Set Dbs = wrk.OpenDatabase(TestDatabaseForLinks)
        Set Tdfs = Dbs.TableDefs
    
       For Each Tdf In Tdfs
    
             If Tdf.Connect <> "" Then
                 Debug.Print "Table: " & Tdf.Name & " - Is Linked To: " & Tdf.Connect
             Else
                 Debug.Print "Table:  " & Tdf.Name & " is not linked"
    
             End If
    
        Next
    
        If Not (Dbs Is Nothing) Then
          Dbs.Close
          Set Dbs = Nothing
          Set Tdfs = Nothing
       End If
    
    End Sub
    

答案 1 :(得分:0)

将其移至另一个目录。链接表具有硬编码路径。

答案 2 :(得分:0)

不在数据库未使用时。在使用时,您应该看到LDB / LACCDB文件。您可以使用记事本打开它以查看工作站名称。

如果您使用的是Access安全性,您还会看到Access用户ID。否则你会看到“Admin”

使用记事本打开.ldb / .laccdb文件将向您显示当前在数据库中的人员以及数据库中的某些工作站。当一个人退出访问他们的工作站名称和访问登录ID时,除非您使用Access安全性,否则将留在“插槽”或​​ldb文件中的记录。下次有人进入MDB时,此插槽或记录可能会被覆盖,具体取决于ldb文件中之前可用的插槽或记录。

Determining the workstation which caused the Microsoft Access MDB corruption