Поделиться через


Экспорт инвентаризации Access (AccessToSQL)

Если у вас несколько баз данных Access и вы не уверены, какие из них необходимо перенести в SQL Server, вы можете экспортировать инвентаризацию всех баз данных Access в проекте. Затем можно просмотреть и запросить метаданные инвентаризации, чтобы определить, какие базы данных и объекты в этих базах данных необходимо перенести. Эта инвентаризация позволяет быстро найти ответы на вопросы, такие как следующий список:

  • Что такое самые большие базы данных?
  • Кто владеет большинством баз данных?
  • Какие базы данных содержат одни и те же таблицы?
  • Какие базы данных не были изменены за последние шесть месяцев?
  • Какие базы данных содержат частную информацию?

Примеры запросов, которые используются для ответа на эти вопросы, приведены в конце этой статьи.

Экспортированные метаданные

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

Экспорт данных инвентаризации

Чтобы экспортировать инвентаризацию Access, необходимо сначала открыть или создать проект SSMA, а затем добавить базу данных Access, которую необходимо проанализировать. После добавления баз данных в проект SSMA вы экспортируете метаданные об этих базах данных в указанную базу данных и схему SQL Server. При необходимости SSMA создает таблицы для хранения метаданных. Затем SSMA добавляет метаданные о базах данных Access в базу данных SQL Server.

Примечание.

База данных Access может быть разделена на несколько файлов: серверная база данных, содержащая таблицы и интерфейсные базы данных, содержащие запросы, формы, отчеты, макросы, модули и сочетания клавиш. Если вы хотите перенести разбиение базы данных в SQL Server, добавьте интерфейсную базу данных в SSMA.

Ниже приведены инструкции по созданию проекта, добавлению баз данных в проект, подключению к SQL Server и экспорту данных инвентаризации.

Создание проекта

  1. Откройте SSMA для Access.

  2. В меню Файл выберите пункт Создать проект.

    Откроется диалоговое окно Создание проекта .

  3. В поле Name введите имя проекта.

  4. В поле "Расположение" введите или выберите папку для проекта.

  5. В поле со списком "Миграция в", выберите целевую версию, в которую требуется перенести, и нажмите кнопку "ОК".

Дополнительные сведения о создании проектов см. в разделе "Создание проектов и управление ими".

Поиск и добавление баз данных

  1. В меню "Файл" выберите "Найти базы данных".

  2. В мастере поиска баз данных введите диск, путь к файлу или UNC-путь, который требуется выполнить поиск. Кроме того, нажмите кнопку "Обзор ", чтобы выбрать диск или сетевую папку.

  3. Нажмите кнопку "Добавить ", чтобы добавить расположение в поле списка.

    Повторите предыдущие два шага, чтобы добавить дополнительные расположения поиска.

  4. При необходимости добавьте условия поиска для уточнения списка возвращаемых баз данных.

    Важно!

    Текстовое поле "Все" или часть текстового поля имени файла не поддерживает дикие карта символы.

  5. Выберите " Сканировать".

    Откроется страница сканирования. Здесь показаны базы данных, найденные и ход поиска. Чтобы остановить поиск, нажмите кнопку "Остановить".

  6. На странице выбора файлов выберите каждую базу данных, которую вы хотите добавить в проект.

    Вы можете использовать кнопки "Выбрать все " и "Очистить все " в верхней части списка, чтобы выбрать или очистить все базы данных. Можно также удерживать клавиши CTRL, чтобы выбрать несколько строк или сохранить клавишу SHIFT вниз, чтобы выбрать диапазон строк.

  7. Выберите Далее.

  8. На странице "Проверка" нажмите кнопку "Готово".

Дополнительные сведения о добавлении баз данных в проекты см. в разделе "Добавление и удаление файлов базы данных Access".

Подключение к SQL Server

  1. В меню "Файл" выберите Подключение в SQL Server.

  2. В диалоговом окне подключения введите или выберите имя экземпляра SQL Server.

    • При подключении к экземпляру по умолчанию на локальном компьютере можно ввести localhost или точку (.).

    • Если вы подключаетесь к экземпляру по умолчанию на другом компьютере, введите имя компьютера.

    • Если вы подключаетесь к именованным экземплярам, введите имя компьютера, обратную косую черту и имя экземпляра. Например: MyServer\MyInstance.

  3. В поле "База данных" введите имя целевой базы данных для экспортированных метаданных.

  4. Если экземпляр SQL Server настроен на прием подключений к порту, отличному от по умолчанию, введите номер порта, используемый для подключений SQL Server в поле порта Сервера. Для экземпляра SQL Server по умолчанию номер порта по умолчанию — 1433. Для именованных экземпляров SSMA пытается получить номер порта из службы браузера SQL Server.

  5. В раскрывающемся списке проверки подлинности выберите тип проверки подлинности , используемый для подключения. Чтобы использовать текущую учетную запись Windows, выберите проверку подлинности Windows. Чтобы использовать имя входа SQL Server, выберите проверку подлинности SQL Server, а затем укажите имя пользователя и пароль.

Дополнительные сведения о подключении к SQL Server см. в Подключение подключении к SQL Server (AccessToSQL).

Экспорт сведений инвентаризации

  1. В Обозреватель метаданных Access разверните базу метаданных Access.

  2. Выберите поле проверка рядом с базами данных.

    Чтобы опустить отдельные базы данных или объекты базы данных, разверните папку "Базы данных", а затем снимите флажок проверка рядом с базой данных или объектом базы данных.

  3. Щелкните правой кнопкой мыши базы данных и выберите "Экспорт схемы".

  4. В диалоговом окне "Выбор схемы экспорта" выберите целевую схему экспортированных метаданных и нажмите кнопку "ОК".

При каждом экспорте метаданных SSMA добавляет данные в инвентаризацию. Существующие данные в инвентаризации не обновляются или не удаляются.

Запрос экспортированных метаданных

После экспорта метаданных о базах данных Access можно запросить метаданные. В следующих инструкциях описано использование окна Редактор запросов в SQL Server Management Studio для выполнения запросов.

Метаданные запроса

  1. В меню "Пуск" наведите указатель на все программы, наведите указатель на Microsoft SQL Server 2005 или Microsoft SQL Server 2008 или Microsoft SQL Server 2012, а затем выберите SQL Server Management Studio.

  2. В диалоговом окне Подключение на сервер проверьте параметры и выберите Подключение.

  3. На панели инструментов Management Studio выберите "Создать запрос", чтобы открыть Редактор запросов.

  4. В окне Редактор запросов введите запрос. Некоторые примеры показаны в следующем разделе.

  5. Нажмите клавишу F5, чтобы запустить запрос.

Примеры запросов

Перед выполнением любого из следующих запросов необходимо запустить запрос USE database_name , чтобы убедиться, что запросы выполняются в базе данных, содержащей экспортированные метаданные. Например, если вы экспортировали метаданные в базу данных с именем MyAccessMetadata, добавьте следующую инструкцию в начале кода Transact-SQL:

USE MyAccessMetadata;
GO

В следующих примерах используется схема dbo . Если вы экспортировали метаданные в другую схему, обязательно измените схему при выполнении этих запросов.

Какие таблицы и столбцы находятся в этих базах данных?

Следующий запрос объединяет таблицы, содержащие метаданные столбца, таблицы и базы данных, а затем возвращает имена всех баз данных, таблиц и столбцов, отсортированных по имени столбца:

SELECT DatabaseName,
    TableName,
    ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
    ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON T.DatabaseId = D.DatabaseId
ORDER BY ColumnName;

Что такое самые большие базы данных?

Следующий запрос возвращает имя базы данных, размер файла и количество таблиц в каждой базе данных Access, отсортированный по размеру файла:

SELECT DatabaseName,
    FileSize,
    TablesCount
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileSize DESC;

Кто является владельцем большинства баз данных?

Следующий запрос возвращает имя базы данных и владельца каждой базы данных Access, отсортированный по владельцу.

SELECT DatabaseName, FileOwner
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileOwner;

Какие базы данных содержат одни и те же таблицы?

Следующий запрос использует вложенный запрос для поиска всех имен таблиц, которые отображаются несколько раз в списке таблиц, а затем использует этот список таблиц для получения имени базы данных. Результаты возвращаются в качестве имени базы данных, а затем имени таблицы и отсортированы по имени таблицы.

SELECT DatabaseName,
    TableName
FROM dbo.SSMA_Access_InventoryTables T
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON D.DatabaseId = T.DatabaseId
WHERE TableName IN (
    SELECT TableName
    FROM dbo.SSMA_Access_InventoryTables
    GROUP BY TableName
    HAVING COUNT(*) > 1
)
ORDER BY TableName;

Какие базы данных не были изменены за последние шесть месяцев?

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

SELECT DatabaseName,
    DateModified
FROM dbo.SSMA_Access_InventoryDatabases
WHERE DATEDIFF(MONTH, DateModified, GETDATE()) > 6
ORDER BY DateModified;

Какие базы данных содержат частную информацию?

Базы данных Access могут содержать конфиденциальную или личную информацию. Эти базы данных могут потребоваться переместить в SQL Server, чтобы воспользоваться его функциями безопасности. Если вы знаете, что столбцы, содержащие конфиденциальные данные, имеют определенное имя или содержат определенные символы, можно использовать запрос для поиска всех столбцов, содержащих эти сведения. Например, можно найти все столбцы, содержащие строку "зарплата". Затем запрос возвращает имя базы данных, имя таблицы и имя столбца.

SELECT DatabaseName,
    TableName,
    ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
    ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON T.DatabaseId = D.DatabaseId
WHERE ColumnName LIKE '%salary%';

Если имя столбца не известно, можно написать запрос, чтобы вернуть все столбцы. Для этого удалите предложение WHERE из предыдущего запроса.

См. также