Назад | Перейти на главную страницу

Определить базы данных Access, связанные с определенным SQL-сервером

Есть ли способ проанализировать файлы .mdb из командной строки (findstr или через сценарий WSH) для определения ссылок на базу данных?

Я пытаюсь идентифицировать все файлы .mdb в большом файловом ресурсе, которые ссылаются на конкретный сервер базы данных. Я попытался вручную выполнить поиск в нескольких файлах .mdb, которые ссылаются на сервер базы данных в шестнадцатеричном редакторе, но поиск по имени сервера базы данных не возвращает никаких совпадений.

Файловый сервер работает под управлением Windows 2003.

Обновить:

Я нашел текст в моем текстовом редакторе (TextPad), который выглядит как встроенная информация ODBC: ... "SERVER = .myserver" ... Я не уверен, какая кодировка используется, findstr не может найти этот текст в файл.

С помощью PowerShell вы, вероятно, сможете. Видеть Сообщения в блоге Ричарда Сиддэуэя с тегом 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

FINDSTR не обрабатывает строки Unicode. Если вы не можете использовать другие утилиты, вы можете получить настоящий дерьмовый вывод, выполнив следующие действия: введите dbname.mdb | findstr "S E R V E R ="

Если вы можете использовать другую программу, загрузите служебную программу SysInternals "strings" здесь: http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx

И сделайте что-нибудь вроде: strings -u dbname.mdb | findstr "СЕРВЕР ="

Насколько я могу судить, на этот вопрос нет ответа. Базы данных Access (обычно файлы .mdb) являются автономными, не подключенными к SQL Server (или другой) серверной базе данных.
Это не так. Подключения к другим базам данных могут быть созданы внутри Access. Я прочитал и начал печатать слишком быстро, предполагая, что это серверная ситуация.

Возможно, данные могут быть извлечены или экспортированы из серверной базы данных и сохранены как база данных Access. Можно импортировать базу данных Access в базу данных на сервере. MS SQL Server даже может читать и записывать в файл базы данных Access через Удаленные хранимые процедуры или "Связать таблицы".

Но в базе данных Access нет обязательного подключения к серверу, и, если это не указано специально, в базе данных Access нет ничего, что могло бы идентифицировать конкретный сервер, к которому он подключен или был подключен.
-> Это не совсем правильно .. ODBC или другой объект подключения в базе данных Access должен иметь информацию о другом конце подключения. Однако я не верю, что эту информацию можно увидеть иначе, как через среду Access или программу.


РЕДАКТИРОВАТЬ / ОБНОВЛЕНИЕ: вопрос был конкретным ... можно ли проанализировать файл .mdb с помощью командной строки или инструмента текстового поиска для поиска соединений с базой данных. Хотя в моем ответе на самом деле не учитывался "интерфейсный" сценарий базы данных, я думаю, что он все еще в силе ... Я не думаю, что вы можете опросить базу данных способом, описанным в вопросе. Вероятно, вы можете написать программу для опроса базы данных Access и получения свойств соединения. Но спрашивали не об этом.