Проверка синхронизации данных между двумя базами данных SQL Server

У нас есть две базы данных SQL-сервера. Исходный сервер содержит данные, полученные из внешней системы, и целевую базу данных на удаленном сервере (используется веб-приложением). Существует пакет SSIS, который сопоставляет столбец из исходных таблиц с целевыми (имена столбцов различаются) и заполняет данные для поддержания синхронизации.

Теперь, чтобы убедиться, что обе базы данных синхронизированы, для которых у нас есть SP, который показывает количество записей, а для некоторых отношений родитель-потомок он показывает количество дочерних элементов для каждой родительской записи (т.е. количество элементов Brandwise). Кто-то должен войти на оба сервера, выполнить SP и получить данные вручную. Затем сравните результаты, чтобы убедиться, что обе базы данных синхронизированы.

Теперь, чтобы автоматизировать этот процесс, мы сделали следующее:

  1. Добавьте конечный сервер как "связанный сервер"
  2. Используйте "EXEC msdb.dbo.sp_send_dbmail" вместе с "@attach_query_result_as_file = 1"
  3. Создайте задание SSIS, которое будет выполнять SP электронной почты для обоих серверов.

Итак, вот как мы получаем два электронных письма, к которым прикреплены результаты запроса. А затем сравнение текстовых файлов завершает проверку синхронизации базы данных.

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


person Hemant Tank    schedule 11.08.2012    source источник


Ответы (2)


Поскольку у вас есть доступ к серверу как к связанному серверу, вы можете напрямую запускать запросы и сравнивать данные.

Пожалуйста, проверьте это

Вы можете изменить задания SSIS для отправки почты на основе этого результата запроса.

person Pradeeshnarayan    schedule 11.08.2012

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

(Select s.Title, s.Description from ERPMasterBrand as s   EXCEPT
Select d.Title, d.Description from MasterBrand as d)
UNION
(Select s.Title, s.Description from MasterBrand as s      EXCEPT
Select d.Title, d.Description from ERPMasterBrand as d)

Любые лучшие предложения? Я протестировал, и это дало желаемые результаты - надеюсь, меня не вводит в заблуждение :-) мое собственное решение.

person Hemant Tank    schedule 13.08.2012