Fragensteller
Warnungen

Allgemeine Diskussion
-
Hallo zusammen,
ich möchte gerne ein Warnung generieren, wenn z.B. Anzahl von Zeilen in eine Tabelle bestimmte Wert übersteigt. Dafür möchte ich Warnunssystem des SQL Server nutzen.
Leider habe ich niergendwo gefunden, wie man es machen kann. Mit die Warnungen kann ich auf Leistungsindikatoren, Eventlog und WMI-Abfrage machen. Wie kann ich eine SQl-Abfrage in die Warnung implementieren kann.
Eine Idee habe ich schon. Man macht ein SQL Script, der mit Hilfe von ein JOB regelmäßige SQL-Abfrage ausführt und ein Ereignis in SQL-LOG schreibt (weiss ich leider nicht welche ID-Bereich für meine Ereignisse nehmen darf). Und der Warnungssystem sucht nach mein Ereignis und benachrichtigt ein Operator.
Kennt jemand ein besseres Weg?
Danke.
- Typ geändert Raul TalmaciuMicrosoft contingent staff Dienstag, 21. Juni 2011 14:24 Warten auf Feedback
Alle Antworten
-
Hallo Andrej,
wo willst Du eine Warnung generieren? Direkt beim ausführen des SQL Statements als Rückmeldung an den ausführenden Benutzer/Job/...? Oder als Eintrag ins Windows Ereignisprotokoll?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Nein. In SQL-Server Protokoll.
Dann wäre wohl das hier für dich interessant:
http://msdn.microsoft.com/de-de/library/ms189531.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Danke. Es geht nicht um Warnung zu erstellen. Ich versuche anders:
SELECT @Count=Count(*) FROM table1
Wenn
@Count < 10 -> nichts tun
Sonst
E-Mail Senden
Das muss alles Warnunssystem von der SQL-Server machen. Ich kann nur
WMI-Warnung. SQL-Ereigniswarnung und SQL-Leistungswarnung erstellen.
Wi kann ich eine benutzerdefienierte Warnung erstellen?
-
Hallo Andrej,
das ginge nur auf Umwegen.
Wenn Du die Hinweise zu sp_add_alert durchliest, so sind dort die Anforderungen genannt.Möglich wäre für den obigen Fall:
Erstelle eine Benutzerdefinierte Meldung (sp_addmessage)Definiere einen Trigger für die Tabelle, der die Meldung
im Falle der Bedingung mit RAISERROR oder xp_logevent auslöst.RAISERROR hat dabei den Nachteil, dass der Client, der den Trigger auslöst,
die Meldung ebenfalls erhält - und sich evtl. dadurch aus dem Konzept bringen lässt.xp_logevent wird in der master ausgelöst, so dass der Kontext für die Warnung darauf verweisen muss.
Gruß Elmar
-
Hallo Andrej,Deine Anforderungen kann man mit Policy-Based Management umsetzen.1. Navigiere im Object Explorer in SSMS zum Management > Policy Management2. Erstelle eine neue Condition (z.B. Condition1) für Facet=Table und Field=@RowCount3. Falls Du eine oder mehrere bestimmten Tabellen überwachen möchtest, erstelle noch eine Condition (z.B. Condition2) für Facet=Table mit dem Expression @Name=‘Table1‘ OR @Name=‘Table2‘ usw.4. Du wirst sicherlich nicht alle Datenbanken überwachen wollen. Erstelle eine neue Condition (z.B. Condition3) für Facet=Database mit dem Expression @Name=‘Database1 ‘5. Erstelle eine neue Policy, in dem ComboBox Check condition, wähle Table:Condition1 in der Liste Against Targets, setze als Target für Table Condition2 und für Database Condition36. Setze Evaluation Mode auf OnSchedule und konfiguriere einen Job Schedule7. Markiere den CheckBox Enable8. Bei Verletzung der Policy wird ein Eintrag im Errorlog gemacht9. Weitere Info findest Du im Artikel Verwalten von Servern mit der richtlinienbasierten Verwaltung