Создайте триггер, который сравнивает поле с полем в другой таблице
-
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 позволяет вам установить его таким образом), отдельно от основного и зеркала Анкет
Таким образом, у вас вряд ли будет провал, который одновременно снимает как ваш основной, так и вашу базу данных зеркала.