Миграция нескольких БД Access (с одинаковыми функциями, но разными данными) в одну БД SQL Server - PullRequest
0 голосов
/ 15 июля 2011

Положение

У меня есть 5 файлов БД доступа, в каждой из которых 10 таблиц, 40 запросов и 8 макросов. Все 5 файлов БД Access имеют одинаковое имя таблицы, структуру таблицы, одинаковые запросы и одинаковые макросы. Единственное отличие - это данные , содержащиеся в таблице. Если это имеет значение, в некоторых таблицах каждой базы данных есть строки от нескольких сотен до 100К +.

Чего я пытаюсь достичь

Я переношу эти файлы 5 БД доступа в одну базу данных SQL Server (2008). Редактировать: После миграции мне нужно знать, какие таблицы принадлежат какой базе данных, поскольку каждая исходная БД Access связана с отделом компании, поэтому мне нужно отслеживать это.

Мои решения или опции

Таблицы будут импортированы в SQL Server в виде таблиц. Запросы будут импортированы как хранимые процедуры. Макрос будет импортирован как новые хранимые процедуры.

  1. Импортируйте таблицы и запросы каждой БД Access в БД SQL Server и переименовывайте каждую таблицу и запросы, назначая им префикс для определения того, какие таблицы принадлежат какой базе данных.
  2. То же, что и # 1, но только таблицы импорта. Что касается запросов, импортируйте только один набор запросов (40 запросов) и измените их на , чтобы динамически выбирать, вставлять, обновлять или удалять из таблиц.
  3. Импорт таблицы A из 1-й базы данных Access, таблицы A из 2-й базы данных Access, таблицы A из 3-й базы данных Access и т. Д. В одну новую таблицу в SQL Server и присвоение им уникального идентификатора, чтобы определить, какая строка данных принадлежит какой базе данных. .

Какой, по вашему мнению, лучший подход? Пожалуйста, скажите мне, если есть лучший способ сделать это, чем я перечислил. Спасибо!

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Я бы перенес их в MS SQL так:

  • Импортируйте все таблицы из базы данных 1 в соответствующие таблицы из SQL Server, но добавьте новый первичный ключ с именем старого, переименуйте старый pk и идентификатор для базы данных.
  • Обновите все внешние ключи в новом поле pk, используя старый pk и идентификатор.
  • Повторите для баз данных 2-5
  • Либо удалите идентификатор, либо сохраните его, в зависимости от того, хотите ли вы знать, откуда поступили строки (то же самое для старых первичных ключей)
  • Импортируйте запросы / макросы только один раз, поскольку они одинаковы.

Делая это таким образом, вы сохраняете отношения pk-fk и запросы без изменений и по-прежнему знаете, откуда поступили строки.

1 голос
/ 15 июля 2011

Я бы сказал номер 3. Вы бы не получили дубликат кода и значительно упростили бы обслуживание.

Одним из примеров более простого обслуживания является настройка производительности.Вы говорите, что запросы одинаковы в 5 БД доступа: скажем, вы обнаружили, что один из запросов выполняется слишком медленно, и вы решили, что вам нужно создать индекс для базовой таблицы.В вариантах № 1 и № 2 это будет означать воссоздание одного и того же индекса для 5 «двойных» таблиц.

0 голосов
/ 13 июня 2014

При доступе к каждой из этих баз данных вы можете назначить каждый идентификатор поля отдела (новое поле) с идентификатором в новой таблице (каждое подразделение имеет свое значение), а затем добавить это значение в каждую из таблиц это должно быть импортировано. Создайте новую таблицу с информацией об отделе, а затем создайте таблицу соединений, которая соединит эти таблицы. Таким образом, каждый отдел отличается друг от друга.

...