2016-04-18 7 views
0

Ich schreibe eine C# -Anwendung, die mit Datenbanken arbeitet und monatlich eine neue Datenbank erstellt.Wie abonniere ich Ereignisse bei der Datenbankanbindung/-trennung?

Die älteren Datenbanken können von einem Benutzer über SQL Management Studio oder auf andere Weise getrennt und angehängt werden.

Ich versuche herauszufinden, wie sql Server Ereignisse (wenn sie existieren) zu hören und zu fangen, wenn die Datenbank angefügt oder gelöst wurde.

Wenn attach Operation auftritt, muss meine Anwendung die Datenbank überprüfen und Tabellenschema auf die neueste Version aktualisieren.

Ich lerne auch die SQL-SMO und dachte, diese Bibliothek würde mir die Ereignis-Listener präsentieren, aber ich finde sie nicht.

Ich könnte natürlich einen Thread oder einen Timer laufen lassen, der alle paar Sekunden nach neuen Datenbanken sucht. Ich habe das versucht und laufe SQLServer.Databases.Refresh() aktualisiere die Datenbankliste, die ich dann iterieren und mit arbeiten kann.

Aber gibt es einen einfacheren Weg, dies zu erreichen? Vielleicht gibt es irgendwo ein Event wie ?

EDIT

Danke elsausmc für mich in die richtige Richtung zu lenken. Ich habe eine kleine Suche auf ServerEventSet und stieß auf this page.

Ich habe einen schnellen Test gemacht und es stellt sich heraus, dass ServerEvent.CreateDatabase feuert, wenn die Datenbank erstellt oder angehängt wurde, jedoch ServerEvent.DropDatabase nicht auf detach auslösen. Könnte vielleicht ein anderes Ereignis sein. Das soll ich als nächstes herausfinden. Danke :)

Googling mit 10+ verschiedenen Phrasen und kam nie mit etwas Einfaches wie smo server events. Wie dumm von mir.

Antwort

1

Vielleicht gibt es in SMO nicht Attach/Detach und es ist unter CREATE und DROP abgedeckt? ServerEventSet.CreateDatabase und ServerEventSet.DropDatabase und behandeln das Ereignis? Entschuldigung, wenn Sie sich das schon angesehen haben.

Verwandte Themen