SQLguard

Der SQLguard ist ein .NET  Konsolenprogramm, das im Wesentlichen folgende Aufgaben/Funktionen unterstützt.

  • Ausführen eines SQL-Statements und Versand des Ergebnisses per E-Mail.
  • Ausführen eines SQL-Statements in Abhängigkeit des Ergebnisses einer anderen Abfrage. Damit sind z.B. Reinigungsläufe möglich.
  • Unterstützung von MySQL und MSSQL Servern.
  • Config-Dateien werden als Parameter übergeben. Somit können verschiedene Arbeitsaufträge Task gesteuert ausgeführt werden.

Aufruf

Das Programm wird wie folgt aufgerufen: 

SQLguard.exe config.xml

Konfiguration

Im folgenden Abschnitt wird der Aufbau des Config-Files beschrieben. 

Postfach über das die Nachrichten gesendet werden.

  • <Sender> Hier werden die Verbindungsdaten des Postfaches hinterlegt über das die Nachrichten gesendet werden sollen. Bitte beachten Sie, dass bei einigen Postfächern <Addresss> und <User> verschieden sein können.

  <Sender>
    <Address> Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. </Address>
    <User>webmaster</User>
    <Password>pass</Password>
    <Mailserver>smtp.gmx.de</Mailserver>
  </Sender>

Datenbanken die benutzt werden sollen.

  • Alle Datenbanken befinden sich innerhalb des <Databases> Tag.
  • Der Type ist dabei der Typ der Datenbank
  • Die Information innerhalb des <Name> Tags ist der programminterne Name, über den diese Verbindung innerhalb des Programms angesprochen wird.
  • Innerhalb des <Conn> Tags steht der Connection-String. Darin sind die eigentlichen Verbindungsdaten enthalten. 
  • Es können beliebig viele Datenbanken konfiguriert werden.

   <Databases>
    <Database Type="msSQL">
      <Name>Verbindung1</Name>
      <Conn>Data Source=ServerName;Initial Catalog=DatabaseName;Persist Security Info=True;User ID=UserName;Password=pass</Conn>
    </Database>
    <Database Type="mySQL">
      <Name>Verbindung2</Name>
      <Conn>server=ServerName;uid=UserName;pwd=pass;Database=DatabaseName;</Conn>
    </Database>
  </Databases>

Konfiguration der Aufträge

  • Innerhalb des <Auftraege> Tag werden die eigentlichen Arbeitsaufträge konfiguriert. Dabei sind 3 verschiedene Typen von Aufträgen möglich.
    • <ExecuteNonQuery> Führt eine Abfrage aus die kein Ergebnis erwartet.
    • <ExecuteScalar> Abfrage die nur einen einzigen Wert zurück gibt. 
    • <ExecuteReader> Abfrage die eine ganze Tabelle zurück gibt.
  • Alle 3 Aufgabentypen haben folgenden gemeinsame Konfigurationsmerkmale:
    • <Name> Hier ist der programminterne Name des Arbeitsauftrages hinterlegt, über den dieser Arbeitsauftrag angesprochen wird.
    • <Database> Programminterner Name der Verbindung wie Sie konfiguriert wurde. 
    • <SQLstatement>Die eigentliche Abfrage.
    • <Empfaenger>E-Mail des Empfängers der die Ergebnis-E-Mail erhalten soll. Wenn mehrere Empfänger verständigt werden sollen, müssen die Adressen mit ; getrennt werden. 
  • Weiter gibt es noch die folgenden Typen. 
    • <ExecuteNonQuery>
      • <Message> Hier wird der Satz hinterlegt, der in der Bestätigung steht. {0} ist dabei ein Platzhalter der durch die Anzahl der betroffenen Datensätze ersetzt wird. 
    • <ExecuteScalar>
      • <Grenzwert> Hinterlegung eines Grenzwertes. Bei einer Überschreitung wird das <GrenzSqlStatement> ausgefüht. Ebenso wird die <Message> nur bei Überschreitung des <Grenzwert> gesendet. Soll die Message immer gesendet werden muss der <Grenzwert> auf 0 gestellt werden. 
      • <GrenzSqlStatement> SQL-Statement das ausgeführt wird, sobald der <Grenzwert> überschritten wird. Wenn kein Statement ausgeführt werden soll, kann dieses Tag leer gelassen werden. 
      • <Message> Hier wird der Satz hinterlegt, der in der Bestätigung steht. {0} ist dabei ein Platzhalter der durch das Ergebnis der Abfrage ersetzt wird. 
    • <ExecuteReader>
      • Keine weiteren Parameter.

  <Auftraege>
    <ExecuteNonQuery>
      <Name>Löschen veralteter Daten</Name>
      <Database>Verbindung1</Database>
      <SQLstatement>DELETE FROM `dpw_logfile` WHERE (YEAR( CURDATE( ) ) - YEAR( Date )) >1</SQLstatement>
      <Empfaenger> Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. </Empfaenger>
      <Message>Von der Abfrage waren {0} Datensätze betroffen.</Message>
    </ExecuteNonQuery>


    <ExecuteScalar>
      <Name>Groessenueberwachung Logdatei</Name>
      <Database>Verbindung1</Database>
      <SQLstatement>SELECT count( * ) AS Anzahl FROM `dpw_logfile`</SQLstatement>
      <Grenzwert>100</Grenzwert>
      <GrenzSqlStatement></GrenzSqlStatement>
      <Empfaenger> Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. </Empfaenger>
      <Message>Die Logdatei hat den Grenzwert von 100 Datensätzen überschritten. Es befinden sich derzeit {0} Datensätze in der Tabelle</Message>
    </ExecuteScalar>


    <ExecuteReader>
      <Name>Am meisten aktive User</Name>
      <Database>Verbindung1</Database>
      <SQLstatement>
      SELECT UserID, count(*) As Anzahl
      FROM `dpw_logfile`
      group by UserID
       order by Anzahl desc
      </SQLstatement>
      <Empfaenger> Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. </Empfaenger>
    </ExecuteReader>
  

  </Auftraege>

Inhalt der gesendeten E-Mails:

Betreff: SqlGuard Löschen veralteter Daten

Von der Abfrage waren 0 Datensätze betroffen.

Betreff: Die Logdatei hat den Grenzwert von 100 Datensätzen überschritten. Es befinden sich derzeit 362 Datensätze in der Tabelle

Die Logdatei hat den Grenzwert von 100 Datensätzen überschritten. Es befinden sich derzeit 362 Datensätze in der Tabelle

Betreff:  SqlGuard Am meisten aktive User

UserID Anzahl
229 147
25 115
32 27
18 23
3 10
174 10
7 9
42 7
26 6
36 4
17 4
Anlagen:
DateiBeschreibungDateigröße
 SQLguard 121 Kb

Aktualisiert (Dienstag, den 31. August 2010 um 17:19 Uhr)