Метод RepairDatabase проверяет все страницы базы данных на правильность связей, проверяет системные таблицы и все индексы. После успешного завершения база данных считается "надежной", а страницы, которые не могут быть спасены (как недействительные ссылки на другие страницы) уничтожаются. У данного метода только один аргумент
DBEngine.RepairDatabase "MyBase.mdb"
После восстановления база данных может увеличиться в размерах, т.к. процесс создания индексов может оставить некоторые удаленные страницы в базе. Поэтому после выполнения операции восстановления необходимо выполнить CompactDatabase для уничтожения неиспользуемых страниц.
Еще один способ получения информации о структуре базы данных основан на использовании конструкции OpenSchema:
Набор записей = соединение.OpenSchema (QueryType, Criteria, SchemaID)
QueryType Criteria
______________________________________________________________________
adSchemaTables TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
TABLE_TYPE
Пример получения списка всех таблиц и запросов
Set rs = cn.OpenSchema(adSchemaTables)
While Not rs.EOF
Debug.Print rs!TABLE_NAME
rs.MoveNext
Wend
Пример получения списка только таблиц
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table")
Для получения списка только таблиц в базе данных Pubs Microsoft SQL Server, используйте следующую команду:
Set rs = cn.OpenSchema(adSchemaTables, Array("Pubs", Empty, Empty, "Table")
Для получения списка полей в таблице можно использовать adSchemaColumns
QueryType Criteria
________________________________________________________________
adSchemaColumns TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
Set rs = cn.OpenSchema(adSchemaColumns,Array(Empty, Empty, "Employees")
While Not rs.EOF
Debug.Print rs!COLUMN_NAME
rs.MoveNext
Wend
Для получения списка имен индексов в таблице adSchemaIndexes
QueryType Criteria
_________________________________________________________
adSchemaIndexes TABLE_CATALOG
TABLE_SCHEMA
INDEX_NAME
TYPE
TABLE_NAME
Set rs = cn.OpenSchema(adSchemaIndexes, Array(Empty, Empty, Empty, Empty, "Employees")
While Not rs.EOF
Debug.Print rs!INDEX_NAME
rs.MoveNext
Wend
Чтобы просмотреть список индексов в таблице Authors базы данных Pubs SQL Server с использованием конструкции adSchemaIndexes, можно воспользоваться следующей записью:
Set rs = cn.OpenSchema(adSchemaIndexes, Array("Pubs", "dbo", Empty, Empty, "Authors")
Ниже приведены примеры нескольких программ, работающих со структурой БД
'Открываем определенное соединение connection.
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset