Erstellen Sie einen Auslöser, der ein Feld mit einem Feld in einer anderen Tabelle vergleicht

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe 3 Datenbanken (ein Prinzip, einen Spiegel und einen Zeugen) und ich versuche, dieses System wie möglich zum Fehler tolerant zu machen.

Deshalb habe ich darüber nachgedacht, in einigen Fällen zusätzliche Codding zu machen, um mich vor dem Verlust des Zeugen zu schützen.

Ich möchte in sys.database_mirroring -Datenbank im Auge behalten, dass es nicht sicher ist, sie zu fördern zu Ich arbeite im Hochsicherheitsmodus)

Mein erster Ansatz war es, einen benutzerdefinierten Windows -Service zu haben, der diese Tabelle überwacht ... aber ich mache eine Menge unnötiger Auswahl in der Datenbank.

Also ich, vielleicht wäre ein Auslöser das, wonach ich suche ... aber ich habe mich nur beibehalten

CREATE TRIGGER modify_state ON SYS.database_mirroring FOR INSERT, UPDATE

Ich brauche Hilfe für den Rest der Syntax.

Ich habe eine state_db -Datenbank mit 2 Spalten (last_state und current_state), und ich muss in der Lage sein, den aktuellen Status mit dem in meinem state_db zu überprüfen. Wenn sie unterschiedlich sind, möchte ich den last_state mit Current_State und Current_State ändern, wobei der frische Status von sys.database_mirroring gelesen wird

Meine Frage ist, kann ich einen Auslöser zum Einfügen verwenden und ändern, um eine Hilfsdatenbank mit den letzten 2 Zuständen von sys.database_mirroring zu führen? Und wenn ja, wie kann ich das machen?

War es hilfreich?

Lösung

Sie können keine Auslöser für Systemobjekte erstellen. Wenn Sie also den Weg gehen, den Sie denken, ist dies nicht möglich.

Ihre beste Wette, um die Fehlertoleranz zu erhöhen .

Auf diese Weise ist es höchst unwahrscheinlich, dass Sie einen Fehler haben, der gleichzeitig sowohl Ihren Auftraggeber als auch Ihre Spiegeldatenbank herausnimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top