Копирование данных в центральную БД SQL Server из многих баз данных через веб-службы ... регулярно - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть МНОГИ СУБ-ОФИСЫ , каждая со своей независимой и изолированной базой данных SQL Server.Мне было поручено разработать новую базу данных CENTRAL OFFICE , чтобы мы могли «постоянно» загружать данные из дополнительных офисов.База данных центрального офиса не существует, поэтому я могу свободно создавать ее с нуля.

Мне, в основном, нужно КОПИРОВАНИЕ НЕКОТОРЫХ СТОЛБ из КАЖДОГО экземпляра субофиса вНОВАЯ база данных в центральном офисе, и это будет происходить регулярно.

Передача будет осуществляться через веб-сервисы (следовательно, XML), поскольку каждая БД хранится в отдельном месте, что создает следующие ограничения:

  • a) Данные поступают в виде кусков (я все еще могу контролировать, какие данные поступают первыми)

  • b) База данных MainOffice НЕ будет иметь прямого доступа к любой базе данных дополнительного офиса

  • c) Каждое подразделение может решить запустить обновление в разное время.

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

МОЙ ВОПРОС:
Каков рекомендуемый способ справиться сфакт, что значения PK в БД SubOffice не будут такими же, как значения PK в центральном офисе, и, следовательно, FK, возможно, в конечном итоге будет указывать на неправильные записи после импорта?

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

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Вместо того, чтобы заново изобретать колесо, почему бы не использовать готовое решение?

Репликация SQL Server уже охватывает все, что вы описали, и имеет явную поддержку Репликация столбцов идентификации :

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

Например, издателю может быть назначен диапазон 1-100, абоненту A - 101-200, а абоненту B - 201-300.Если строка добавлена ​​на издателе и значение идентификатора равно, например, 65, это значение реплицируется каждому подписчику.Когда репликация вставляет данные в каждого подписчика, она не увеличивает значение столбца идентификаторов в таблице подписчиков;вместо этого вставляется буквенное значение 65.Только вставки пользователя, но не вставки агента репликации, приводят к увеличению значения столбца идентификатора.

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

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

2 голосов
/ 07 ноября 2011

Вы должны серьезно рассмотреть возможность использования значений UNIQUEIDENTIFIER для ключей.В противном случае изучите способы решения проблем репликации при использовании значений int для ключей.

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