Создайте триггер, который сравнивает поле с полем в другой таблице

dba.stackexchange https://dba.stackexchange.com/questions/9671

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть 3 базы данных (одна основная сумма, одно зеркало и свидетель), и я пытаюсь сделать эту систему наиболее устойчивой к ошибкам.

Поэтому я думал о том, чтобы в некоторых случаях защитить меня от потери свидетеля.

Я хочу отслеживать mirroring_state_desc в базе данных sys.database_mirroring, так что в случае, если он изменяется от синхронизации до отключения, я узнаю, что его небезопасно его продвигает до принципала, но если он изменяется от синхронизированного в отключенное, в порядке, чтобы продвигать его (это в порядке (это в порядке (для его продвижения (в порядке его содействие (для его содействия (если он меняется от синхронизированного на отключение. Я работаю в режиме высокой безопасности)

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

Так что я, может быть, триггер будет тем, что я ищу ... но я застрял просто

CREATE TRIGGER modify_state ON SYS.database_mirroring FOR INSERT, UPDATE

Мне нужна помощь для остальной части синтаксиса.

У меня есть база данных State_db с 2 столбцами (last_state и current_state), и мне нужно иметь возможность проверить текущее состояние, а в моем состоянии state_db. Если они разные, я хочу изменить последний_state с помощью current_state и current_state с чтением свежего состояния из sys.database_mirroring

Мой вопрос: могу ли я использовать триггер для вставки и модифицировать, чтобы сохранить вспомогательную базу данных с последними 2 состояниями sys.database_mirroring ?? И если да, как я могу это сделать?

Это было полезно?

Решение

Вы не можете создавать триггеры на системных объектах. Так что идти по пути, который, по вашему мнению, невозможно.

Лучше всего повысить устойчивость к неисправности, - это перенести базу данных свидетелей на собственное оборудование сервера (не просто еще один экземпляр на одном поле, хотя SQL Server позволяет вам установить его таким образом), отдельно от основного и зеркала Анкет

Таким образом, у вас вряд ли будет провал, который одновременно снимает как ваш основной, так и вашу базу данных зеркала.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top