2010-01-21 5 views
3

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

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

ответ

5

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

http://www.red-gate.com/products/SQL_Data_Compare/index.htm

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

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

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

+0

Невозможно жить без инструментов RedGate при работе с SQL Server. Если это всего 400 тыс. Данных, которые меняются, обновление в реальном времени должно быть прекрасным. Вы можете даже сценарий сборки, резервного копирования и запуска сравнения/синхронизации. – Tom

+0

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

+0

Не будет ли генерировать полный поток журналов без какой-либо полезной цели? Кроме того, если вы выполняете обновление в реальном времени, вы собираетесь внести все изменения и выпустить одну фиксацию? У вас есть пространство, необходимое для этого, или вы сможете разрешать грязные чтения? Таким образом, любые запросы в процессе будут путать данные с некоторыми из старых строк и новыми строками? –

0

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

0

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

0

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

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

0

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

4

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

+1

Вы не можете переименовать базу данных, пока соединения открыты. Сначала вам нужно установить db в режим одиночного пользователя (но вам нужно подождать, пока в базе данных не будет пользователей или не будет отключено все пользователи), сделайте своп и верните его в многопользовательский режим. –

1

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

ПОЦЕЛУЙ: Вы можете загрузить восстановление (или прикрепить) БД в новый каталог, а затем перенастроить свои приложения (например, через ODBC DSN) для работы с новой БД - как только вы опрокидывание сделано вы можете отсоединить старый. Этот метод называется «Обновление проката» и используется повсеместно для 24/7 сайтов.

0

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

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