识别链接到特定 SQL 服务器的 Access 数据库

识别链接到特定 SQL 服务器的 Access 数据库

有没有办法从命令行(findstr 或通过 WSH 脚本)解析 .mdb 文件来识别数据库链接?

我正在尝试识别大型文件共享中链接到特定数据库服务器的所有 .mdb 文件。我尝试在十六进制编辑器中手动搜索链接到数据库服务器的几个 .mdb 文件,但搜索数据库服务器名称没有返回任何结果。

文件服务器运行的是Windows 2003。

更新:

我在文本编辑器(TextPad)中发现一些看起来像嵌入的 ODBC 信息的文本:...“SERVER=.myserver”...我不确定使用了什么编码,findstr 无法在文件中找到此文本。

答案1

FINDSTR 不处理 Unicode 字符串。如果您不能使用其他实用程序,您可以通过执行以下操作获得真正糟糕的输出:type dbname.mdb | findstr "SERVER ="

如果您可以使用其他程序,请在此处下载 SysInternals“字符串”实用程序: http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx

然后执行以下操作:strings -u dbname.mdb | findstr“SERVER=”

答案2

使用 PowerShell 或许可以。请参阅Richard Siddaway 的博客帖子带有 Access 标签。 我认为您可以通读所有表定义连接字符串并找出适当的值。以下是我在 VBA 中使用的代码。

For i = 0 To db.TableDefs.Count - 1
    If Len(db.TableDefs(i).Connect) > 0 Then
        TableConnectStrnig = Mid(db.TableDefs(i).Connect, 11)
    End If
Next i

答案3

据我所知,这个问题没有答案。Access 数据库(通常是 .mdb 文件)是独立的,不连接到 SQL Server(或其他)基于服务器的数据库。
这不对。可以在 Access 中创建与其他数据库的连接。我读了之后打字太快了,以为是服务器驱动的情况。

可以从基于服务器的数据库中提取或导出数据并将其存储为 Access 数据库。可以将 Access 数据库导入基于服务器的数据库。MS SQL Server 甚至可以通过以下方式读取和写入 Access 数据库文件远程存储过程或者 ”链接表“。

但是 Access 数据库中不需要服务器连接,并且除非专门编码,否则 Access 数据库中没有任何内容可以识别它所连接或已经连接的特定服务器。
--> 这并不完全正确。Access 数据库内的 ODBC 或其他连接对象应该包含有关连接另一端的信息。但是,我认为除了通过 Access 环境或程序之外,无法看到这些信息。


编辑/更新:问题很具体……可以使用命令行或文本搜索工具解析 .mdb 文件以查找数据库连接。虽然我的回答并没有真正考虑“前端”数据库场景,但我认为它仍然有效……我认为您不能按照问题中描述的方式查询数据库。您可能可以编写一个程序来查询 Access 数据库并获取连接属性。但这不是所问的。

相关内容