2011-01-02 5 views
2

Кто-нибудь знает, как работает базовая модель репликации в SQL-сервере? Они в основном зависят от значений времени и времени UTC, чтобы определить, что-то новое, или они сохраняют таблицу всех изменений (например, таблицу tableID + rowid, которая изменилась).алгоритм репликации сервера sql

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

Я считаю, что если SQL Server репликация работает, просто проверяя даты, то это должно быть достаточно для меня.

Любая мудрость здесь?

благодаря

ответ

1

SQL Server имеет работу LogReader, который метко назвал. Репликация считывает журнал транзакций и применяет соответствующие транзакции к подписным базам данных.

+0

OK. Так что отвечает на мой вопрос. SQL-сервер обрабатывает его, по существу, в очереди на все изменения, а не на изменение даты. Это имеет смысл, потому что оно сломается, если системная дата была изменена. Поэтому я думаю, это то, что я понял. – reggie

0

С одной стороны, SQLServer (и это не единственный) поддерживает несколько алгоритмов репликации.
Вы можете найти here информацию о тех, которые были реализованы в SQLServer 2008. Прочтите сначала X Replication Overview, затем следуйте за How X Replication works для получения более подробной информации.

2

Как транзакция происходит в SQL Server, она записывается в журнал транзакций вместе с информацией, относящейся к транзакции.

Репликация SQL Server использует этот журнал транзакций, чтобы определить, какие транзакции еще не обработаны, и передать их подписчику. Там будет много больше происходит под капотом, чтобы следить за пересечением сделок, публикаций, подписки и т.д., но я оставлю это в MSDN документации о репликации SQL Server http://msdn.microsoft.com/en-us/library/ms151198.aspx

Переходя к точке о строительстве ваша собственная система репликации:

Не создавайте собственную систему репликации. Слишком много осложнений, которые заставят вас потратить много дней на работу. Вам будет намного лучше использовать элементы, поставляемые с SQL Server.

Способы репликации SQL Server довольно впечатляют из коробки.

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

Кроме того, прочитать столько, сколько вы можете здесь, чтобы получить представление о том, что он может сделать для вас http://msdn.microsoft.com/en-us/library/ms151198.aspx

+0

OK. Ну, у нас есть основной сервер, который объединяет данные. У нас есть инструмент администратора, который загружает в него данные, а затем отправляет данные всем спутникам. Спутники будут просить об этих обновлениях. Они также собирают свои собственные данные и время от времени выводят эти данные на центральный сервер.Некоторые спутники имеют ассоциации – reggie

+0

ОК. Ну, у нас есть основной сервер, который объединяет данные. У нас есть инструмент администратора, который загружает в него данные, а затем отправляет данные всем спутникам. Спутники будут просить об этих обновлениях. Они также собирают свои собственные данные и время от времени выводят эти данные на центральный сервер. У некоторых спутников есть ассоциации. Таким образом, спутник A и B связаны между собой. A отправляет свои данные на центральный сервер, и ему нужно вернуться на спутник B. Мы хотим избежать того, чтобы GUID как ПК, так что мы делаем на всех спутниках, создаем данные с помощью SystemID (int) + IdentityID. – reggie

+0

Поэтому, когда эти данные копируются со спутника A на сервер обратно на спутник B, во время этой копии необходимо отключить идентификационную вставку. Сателлиты будут подключаться большую часть времени, но поскольку он проходит через Интернет, очевидно, несколько раз соединение будет отключено. Раньше я использовал репликацию SQL-сервера и не считал тривиальным использовать его вне коробки. Также больно менять то, что вы копируете позже. – reggie

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