Заменить базу данных SQL Server - PullRequest
3 голосов
/ 21 января 2010

У поставщика есть база данных (только для чтения), которая отправляется нам через DVD каждую неделю. Их скрипт обновления отсоединяет существующую копию базы данных, перезаписывает MDF и LDF, удаляет всех пользователей и воссоздает то, что, по их мнению, должно быть надлежащим образом. Есть ли способ, которым я могу просто синхронизировать данные, не переводя базу данных в автономный режим? Это круглосуточная функция, которая вызывает 15 минут простоя во время обновлений.

Вспомогательная информация: База данных содержит ~ 50 таблиц общим размером 400 МБ. Фактический объем измененных данных составляет около 400 КБ. Сервер работает под управлением Server 2008 с SQL Server Enterprise Edition 2008.

Ответы [ 8 ]

5 голосов
/ 21 января 2010

Читать данные Red Gate Сравнение

http://www.red -gate.com / продукция / SQL_Data_Compare / index.htm

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

Также имеется возможность автоматически синхронизировать ваши данные

Для этой операции вам придется загрузить входящую базу данных на сервер.

4 голосов
/ 21 января 2010

Что вы можете сделать, это иметь две базы данных DB_A и DB_B, когда они отправляют вам новую базу данных, которую вы устанавливаете, и заменяете DB_B. Тем временем все ваши пользователи используют DB_A. Затем переименуйте DB_A в DB_C и переименуйте DB_B в DB_A. Это уменьшит время простоя почти до 0. Или вы можете просто изменить соединение на точку с DB_A на DB_B, как только БД будет готова.

1 голос
/ 21 января 2010

Не могу поверить, что никто не упомянул этот метод.

KISS: Вы можете загрузить восстановление (или присоединить) БД в новый каталог, а затем перенастроить ваши приложения (например, через ODBC DSN) для работы с новой БД - после Ролловер сделан, вы можете отсоединить старый. Этот метод называется «Скользящее обновление» и используется повсеместно для круглосуточных сайтов.

0 голосов
/ 21 января 2010

Вы можете использовать SSIS для создания процесса импорта / обновления данных. Один вопрос, который я хотел бы задать перед этим, заключался бы в том, что будет, если за короткий период времени в таблице появятся новые данные, а таблица b не будет обновлена? Должны ли все данные оставаться синхронизированными? Следуйте советам Хосе Чамы, если не можете, даже на минуту не расставайтесь.

0 голосов
/ 21 января 2010

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

В качестве альтернативы, они могут предоставлять различные сценарии для обновления любых данных и изменений схемы, которые им требуются. Запустите сценарии (в основном, кучу create, alter, add и drop для изменений схемы, а также вставки для новых данных) в активной базе данных, чтобы обновить ее. Преимущество этого заключается в том, что скрипты легко контролируются версиями.

0 голосов
/ 21 января 2010

Вы можете синхронизировать данные с помощью такого инструмента, как Red-Gate Data Compare.

0 голосов
/ 21 января 2010

Вы можете загрузить базу данных в качестве отдельной базы данных, а затем использовать утилиту, подобную SQL Data Compare , чтобы различать различия в данных и генерировать скрипт.

0 голосов
/ 21 января 2010

Вы можете написать свою собственную программу, которая подключается как к базе данных, предоставленной поставщиком, так и к вашей (возможно, к DTS или приложению C #) и обладает определенными сведениями о том, какие данные следует перемещать / переносить из базы данных поставщика в свою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...