0

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

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

Я думал, что триггеры могут быть здесь, но, возможно, есть другой метод, о котором я не знаю (возможно, MS Sync Framework или адаптер данных на уровне кода, который будет работать больше, потому что есть так много код доступа к данным распространяется повсеместно, классический ASP и .Net - десятки проектов). Данной базой данных является SQL Server 2005, работающий в режиме совместимости SQL Server 2000.

+2

Лично я бы написал программу для перемещения данных и протестировал ее до тех пор, пока результат не будет таким, как вы хотите. Затем, когда вы хотите жить вживую, вы можете запустить его во время простоя и выполнить задание. Вам действительно нужно тщательно протестировать, особенно если вы сильно меняете структуру и добавляете правила референциальной целостности в новую базу данных. Если база данных была написана плохо, тем лучше шанс, что программное обеспечение, работающее на нем, также было. –

+0

Да, программное обеспечение было написано плохо. Это одна из тех ситуаций, когда компания развивает вещи в течение длительных периодов времени со многими разными разработчиками. Закончился беспорядок. Миграция данных с помощью приложения миграции сразу не является вариантом, так как старая система будет поддерживать некоторые из старых продуктов, а новые продукты переместятся в новую систему. –

+0

Одна из моих идей заключалась в том, чтобы создать схему «адаптера» в новой базе данных, которая будет содержать таблицы, которые связывают старые первичные ключи с новыми первичными ключами и позволяют поддерживать синхронизацию данных между ними. Новая система не будет обновлять старую систему, но изменения старой системы всегда будут распространяться на новую, полностью используя триггеры. –

ответ

1

Я думаю, что путь к записи состоит в том, чтобы написать хранимую процедуру в новой базе данных, которая на самом деле приведет ваши изменения delta (только те изменения, которые были сделаны с последнего прогона до момента запуска хранимой процедуры) , и поместите эту хранимую процедуру в задание агента sql.

Настройка задания агента SQL Server для запуска каждые 15 минут, и пусть синхронизации данных в.

недостатки использования триггеров в этом сценарии

спусковые позволит снизить производительность, так как сервер SQL будет выполняйте также код запуска вместе с операциями update/insert/delete и каждый раз включайте их как часть выполнения, то есть, если ваш триггерный код занимает 2 секунды для выполнения, а инструкция обновления без триггера занимает 2 секунды для выполнения, то время обновления будет увеличено до 4 секунд с помощью триггера. Поэтому использование триггеров в этом случае может привести к огромной производительности бутылочной горловины.

+0

Я слышу вас .. какие-либо рекомендации по определению дельты? Эффективность, безусловно, будет зависеть от использования триггеров, я предполагаю, что использование строк может использоваться здесь, чтобы определить, какие строки изменились. Однако производительность также может быть затронута здесь, так как мне нужно будет потенциально сравнить миллионы строк для изменений версии. –

+0

Можете ли вы рассказать нам, какую версию сервера SQL Server (2005,2008 ...) и версию (Developer/Standard/Enterprise ....) вы используете. – Surendra

0

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