2009-11-20 2 views
0

Наша архитектура приложения позволяет нам размещать несколько клиентов в одной базе данных, а также размещать несколько баз данных. Это позволяет нам масштабировать, распределяя клиентов по нескольким базам данных. Например, 20 клиентов могут находиться в базе данных A, а еще 15 могут быть в базе данных B. Мы используем поле ClientID почти в каждой таблице для разделения данных клиента. Все первичные ключи нашей таблицы - это поля идентификатора идентификатора INT.Перемещение данных клиента из одной базы данных в новую

Я ищу инструмент/скрипт, который поможет мне извлечь данные из одной базы данных и переместить их в совершенно новую базу данных (так что ПК останутся неизменными). Я надеюсь, что это уже существует, поэтому нам не нужно строить свои собственные. Довольно гибкий способ работы, но в идеале он просто создает большой файл .sql со всеми необходимыми ВСТАВКАМИ в правильном порядке для перемещения данных и еще один файл sql со всеми необходимыми DELETES для удаления данных из источника.

Если это делает никакой разницы мы на SQL Server 2008.

ответ

1

Если у вас есть стандарт или предприятие, у вас есть SSIS. Хотя это может не квалифицироваться как «инструмент», его довольно легко реализовать в этом сценарии.

+0

Хорошо, проверьте SSIS, чтобы посмотреть, что он может сделать. Благодарю. – Linus

0

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

SplendidCRM использует этот метод при импорте данных из других систем БД.


Обновление:

Мое предположение было то, что операция передачи данных между базами данных не в том, что часто и что вам нужно архитектуру базы данных для выполнения этой задачи. Я бы использовал GUID в качестве ключевого ключа для проверки данных для передачи данных, но я бы не использовал это как первичный ключ для соединений для стандартных операций, таких как URL. Несмотря на то, что они уникальны в разных базах данных, компромисс заключается в том, что GUID работают медленно.

Другими словами, GUID теперь будет в дополнение к вашим существующим основным ключам и будет действовать как средство подтверждения для вас, если что-то пойдет не так. Если вам нужно ClientID в базе данных A, чтобы сохранить то же значение в базе данных B, то столбец идентификации в качестве этого идентификатора будет проблемой. Возможно, вам придется создать другой идентификатор, который не является «автоматически сгенерированным». Это может быть нечто иное, чем GUID, но мой инстинкт состоит в том, что целых чисел будет недостаточно. Возможно, вы можете создать столбцы, которые являются хешем ключа идентификации, имени клиента и имени базы данных, или, проще говоря, просто конкатенация этих столбцов в столбце varchar.

+0

Дэвид, есть ли компромиссы с производительностью, если вы используете ключи GUID и делаете много соединений? Кроме того, одна из причин, по которым мы не пошли по этому маршруту, мы думали, что это будет беспорядок наших URL-адресов приложений при обращении к ресурсу. – Linus

1

Я могу рекомендовать redgate SQL DataCompare для этого, мы используем его для синхронизации данных и используем их SQL Compare для синхронизации схемы базы данных.

Оба инструмента могут выводить sql, вы можете выполнить сами, или инструменты могут выполнять сами sql-скрипты.

У них есть версия командной строки для командной строки, поэтому вы можете использовать их в сценарии развертывания, но я этого не пробовал.

Они оба работают очень хорошо, и, без сомнения, стоят цены.

+0

AndreasN, спасибо за рекомендацию. Просто чтобы быть ясным, я не делаю никакого сравнения или синхронизации. То, что я хотел бы сделать, это переносить пакет связанных данных на основе ClientID из одной базы данных в новую. Этот инструмент делает это? – Linus

+0

Не можете ли вы сделать это с помощью инструментов внутри SQL-Server? SSIS и т. Д. – AndreasN

+0

Возможно. Не очень хорошо знаком с SSIS. Думаю, я это проверю. – Linus

Смежные вопросы