Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MIN_ACTIVE_ROWVERSION on AlwaysOn  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Здравствуйте господа,
может кто-то дать ответ на такой вопрос? Если база работает в режиме AlwaysOn (readable secondary replicas) или иным способом синхронизируется через лог транзакций, то гарантируется ли правильная работа функции MIN_ACTIVE_ROWVERSION().

Другими словами, есть ли гарантия того, что если MIN_ACTIVE_ROWVERSION() = Х, то все rowversion < X уже поступили на реплику и доступны для чтения?

Кто не знает MIN_ACTIVE_ROWVERSION(), вам сюда:
https://msdn.microsoft.com/en-us/library/bb839514.aspx
14 мар 16, 16:46    [18929304]     Ответить | Цитировать Сообщить модератору
 Re: MIN_ACTIVE_ROWVERSION on AlwaysOn  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Если говорить про always on, то ответ "нет", потому что даже синхронная реплика гарантирует только то, что транзакция синхронно запишется в лог реплики, а не то, что она там применится.
14 мар 16, 16:54    [18929358]     Ответить | Цитировать Сообщить модератору
 Re: MIN_ACTIVE_ROWVERSION on AlwaysOn  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Гавриленко Сергей Алексеевич
Если говорить про always on, то ответ "нет", потому что даже синхронная реплика гарантирует только то, что транзакция синхронно запишется в лог реплики, а не то, что она там применится.


Хорошо, а если мы применит такой хак.

1) В исходной базе (не на реплике), заведем таблицу T(MIN_ACTIVE_ROWVERSION RowVersion, Date DATETIME)
2) Будем скидывать в эту таблицу MIN_ACTIVE_ROWVERSION раз в минуту (или через интервал А)
3) Будем на реплике брать SELECT @X = MAX(MIN_ACTIVE_ROWVERSION) FROM T

Гарантирует ли это нам, что записи c RowVersion < @X поступили на реплику?

Вопрос собственно в чём? Мы выгрузили с реплики данные да @Existing_RowVersion. До какой RowVersion мы можем безопасно (без риска потерять записи) читать на реплике?

Чтобы не усложнять задачу, будем считать, что удалений нет или что они для наших целей несущественны.
14 мар 16, 17:10    [18929494]     Ответить | Цитировать Сообщить модератору
 Re: MIN_ACTIVE_ROWVERSION on AlwaysOn  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Скорее всего, так полетит.

Сообщение было отредактировано: 14 мар 16, 17:57
14 мар 16, 17:14    [18929518]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить