Мы столкнулись с подобной ситуацией несколько лет назад, но с самого начала мы знали, что нам придется однажды перейти на SQL SERVER, поэтому весь код был написан для работы с клиента Access на Access и SQL-сервере. базы данных.
Идея одноэтапной миграции на SQL-сервер, безусловно, является более простым способом управления этим на стороне базы данных, и для этого есть множество инструментов. Но, в зависимости от того, как ваше клиентское приложение взаимодействует с базой данных, ваш код может не работать должным образом. Если, например, ваш код содержит много инструкций SQL (или генерирует их на лету, например, добавляя фильтры к инструкциям SELECT), ваш синтаксис может быть несовместим с «сервером SQL»: использовать подстановочные знаки, даты, функции, не будет работать на сервере SQL.
В дополнение к этому, и, как сказал @mjv, другой недостаток одноразового переключения на MS SQL состоит в том, что вы унаследуете многие проблемы от исходной базы данных: неправильные или неправильные имена полей, неправильные первичные / внешние ключевые политики, скрытые отношения «один ко многим», которые вы хотели бы реализовать в новой модели базы данных, и т. д.
Я предложу здесь некоторые принципы и правила для реализации решения «мягкого перехода», которое явно вам подходит. Просто сказать, что это будет непросто, но определенно очень интересно, особенно при работе с 300 столами! Удачи тебе!
Я предполагаю, что у вас есть возможность обновлять код клиента, и вы предпочитаете всегда использовать один и тот же интерфейс клиента. Конечно, во время перехода возможно иметь два разных интерфейса, по одному для каждой базы данных, но это будет очень запутанным для пользователей и постоянным источником разочарования для них.
По моему мнению, наилучшее решение сильно зависит от:
- Оригинальная технология подключения,
и способ управления данными в вашем
код клиента: доступ к связанным таблицам,
ODBC, ADODB, набор записей, локальный
таблицы, формы, источники записей, партия
обновление и т. д.
- Возможности разделить ваш
таблицы и ваше приложение в основном
независимые модули.
И вы не пощадите следующие обязательные действия:
настройка перевода
процедура из базы данных доступа к серверу SQL. Вы
можно использовать уже существующие инструменты (
Доступ к мастеру увеличения размера очень плохой,
так что не стесняйтесь купить настоящий
один, как SSW или EMS SQL Manager,
очень мощный) или построить свой собственный
один с Visual Basic. Если ваш план
это сделать некоторые изменения в данных
Определение, вы определенно будете иметь
написать код Иметь ввиду
что вы запустите этот код
maaaaaany раз, так что убедитесь, что
это включает в себя все, что экономит время
инструкции, которые позволят вам
перезапустите процесс с самого начала
столько раз, сколько вы хотите. Ты сможешь
приходится выбирать между 2 основными данными
стратегии импорта при импорте данных:
a - DELETE existing record, then INSERT imported record
b - UPDATE existing record from imported record
Если вы планируете переключаться на новые типы первичных \ внешних ключей, вам придется отслеживать старые идентификаторы в новой модели базы данных в течение переходного периода. Не стесняйтесь переключаться на первичные ключи GUID на этом этапе, особенно если в один из дней планируется репликация данных на нескольких сайтах.
Эта процедура передачи будет разделена на модули, соответствующие «логическим» модулям, определенным ранее, и вы должны иметь возможность запускать любой из этих модулей независимо (разумеется, имея в виду, что они, вероятно, должны быть реализованы в конкретный заказ, где модуль «клиенты» должен запускаться до модуля «выставление счетов»).
реализовать в коде вашего клиента возможность подключения как к исходной базе данных ms-access, так и к новому серверу MS SQL. В идеале вы должны иметь возможность управлять из своего кода обоими соединениями для отображения и проверки данных.
Эта возможность будет реализована с помощью модулей, где у вас будет для каждого из них «пробный период», то есть возможность выбора во время тестирования между подключением доступа и подключением sql при использовании модуля. После завершения и тестирования модуль можно запустить в режиме эксклюзивного сервера SQL.
В течение периода передачи, который может длиться несколько месяцев, вам придется программно управлять ограничениями базы данных, которые существуют между модулями «SQL-сервер» и «Access». Возвращаясь к нашему примеру клиентов / выставления счетов, модуль клиентов сначала переключится на MS SQL. Прежде чем модуль Invoicing может быть переключен, вам необходимо программно реализовать отношения один-ко-многим между клиентами и счетами, где каждая из таблиц будет находиться в отдельной базе данных. Такое ограничение можно реализовать в форме «Счет-фактура», заполнив поле со списком «Клиенты» набором записей «Клиенты» с сервера SQL.
Мое предложение состоит в том, чтобы собрать ваши модули, следуя вашей модели базы данных , всегда начиная с таблиц «один» или ваших отношений «один ко многим»: базовые списки, такие как «Единицы», «Валюты» «Страны» должны быть переключены в первую очередь. У вас будет первый опыт написания кода для передачи данных и управления вторым соединением в вашем клиентском интерфейсе. После этого вы сможете «подняться» в своей модели базы данных, переключив таблицы «продукты» и «клиенты» (где единицы, страны и валюты являются внешними ключами) на новый сервер.
Удачи!