none
Warnungen RRS feed

  • 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.

     

     

    Donnerstag, 9. Juni 2011 16:37

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
    Donnerstag, 9. Juni 2011 16:54
    Moderator
  • Nein. In SQL-Server Protokoll.
    Donnerstag, 9. Juni 2011 17:00
  • 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
    Donnerstag, 9. Juni 2011 17:07
    Moderator
  • 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?

     

     

    Donnerstag, 9. Juni 2011 17:18
  • 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

    Donnerstag, 9. Juni 2011 18:09
  • Hallo Andrej,
     
    Deine Anforderungen kann man mit Policy-Based Management  umsetzen.
     
    1. Navigiere im Object Explorer in SSMS zum Management > Policy Management
    2. Erstelle eine neue Condition (z.B. Condition1) für Facet=Table und Field=@RowCount
    3. 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 Condition3
    6. Setze Evaluation Mode auf OnSchedule und konfiguriere einen Job Schedule
    7. Markiere den CheckBox Enable
    8. Bei Verletzung der Policy wird ein Eintrag im Errorlog gemacht

    Samstag, 11. Juni 2011 14:48