Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Automatisation mit SQL Server

Geschrieben von: Christoph Wille
Kategorie: Server

In vorangegangenen Artikeln haben wir bereits gesehen, wie man mit Hilfe verschiedener Werkzeuge ASP Seiten automatisch ablaufen lassen kann. Dabei haben wir bis jetzt eine sehr mächtige Job-Engine nicht betrachtet - den SQL Server Agent.

Der SQL Server Agent kommt mit SQL Server 7.0 oder höher, und erlaubt, Jobs zu managen - und das sowohl flexibel als auch programmiertechnisch leistungsstark. Man kann einen Job aus mehreren Schritten zusammensetzen, und jeder Schritt kann verschiedene Programmiertechniken beeinhalten (nur ein Auszug):

  • CmdExec: ein Kommandozeilenprogramm ausführen.
  • ActiveX Script: ein VBScript oder JScript Script ausführen.
  • Transact SQL: eine Folge von SQL Befehlen auf einer bestimmten Datenbank ausführen.
  • Replikation: eine Datenbankreplikation starten.

Diese Schritte können miteinander verbunden werden - so zum Beispiel kann man bestimmen, daß Schritt C nur dann ausgeführt wird, wenn Schritt B fehlgeschlagen ist.

Das Scheduling ist das, was mir an den SQL Server Agent Jobs eigentlich am besten gefällt: ich kann mehrere Zeitpläne festlegen, und dies sehr bequem und leistungsstark. Man kann Jobs unter folgenden Bedingungen starten:

  • Wenn der SQL Server Agent Service startet
  • Wenn die CPU "unterbeschäftigt" ist
  • Einmalig
  • Wiederholend - täglich, wöchentlich, monatlich.

Das folgende Beispiel erklärt Schritt für Schritt, wie man einen einfachen Job deklariert. Ich möchte Sie dazu auffordern, mit den Optionen herumzuspielen, um ein Gefühl für die Leistung des SQL Server Agent zu bekommen, da eine eingehende Diskussion aller Optionen nicht möglich ist.

Anlegen eines neuen Jobs

Die folgende Anleitung beschreibt, wie Sie einen neuen SQL Server Job anlegen können, der nach einem bestimmten Zeitplan eine Aktion ausführt. In unserem Falle ist es ein einfaches ActiveX Script, das uns täglich um 20:00 eine Abfrage als XML mailt. Ein Anwendungsfall wäre, sich eine Übersicht der Bestellungen des aktuellen Tages mailen zu lassen - und es muß ja nicht XML sein, es kann auch eine aufwendig formatierte HTML Email sein.

Schritt 1 Starten Sie den SQL Server Enterprise Manager, wählen Ihren Server aus und öffnen den Management Folder. Klicken Sie mit der rechten Maustaste, und wählen New Job aus dem Kontextmenü (siehe Abbildung).

Schritt 2 Die New Job Properties Dialogbox öffnet sich (siehe Abbildung). Geben Sie hier den Namen des Jobs ein - OrdersEmail. Für den Anfang kann man die restlichen Optionen auf diesem Tab beruhigt auf den Standardwerten belassen.

Schritt 3 Wechseln Sie zum Tab Steps. Klicken Sie auf die New Schaltfläche um die Dialogbox New Job Step aufzurufen. Benennen Sie den Schritt Send my mail, und wählen Sie ActiveX Script als Typ aus. Diese Wahl erlaubt Ihnen, VBScript einzutippen - und das kennen Sie ja bereits von ASP her. Hier ist der entsprechende Sourcecode zum Testen (tauschen Sie aber bitte die Emailadresse!):

Set Mailer = CreateObject("SoftArtisans.SMTPMail")
Mailer.FromName = "SQL Server Automated Mail"
Mailer.FromAddress = "webmaster@alphasierrapapa.com"
Mailer.RemoteHost = "email.aon.at"
Mailer.AddRecipient "Administrator", "christophw@alphasierrapapa.com"
Mailer.Subject = "Automatisierte Benachrichtigung"
Mailer.BodyText = "Datum: " & Now

Set rs = CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM ORDERS" 
strConnStr = "provider=sqloledb.1;user id=sa;password=;" & _
  "initial catalog=Northwind;data source=crimsontide"

rs.Open strSQL, strConnStr
Const adPersistXML = 1
rs.Save "c:\temp\test.xml", adPersistXML
rs.Close
Set rs = Nothing
	
Mailer.AddAttachment "c:\temp\test.xml"
Mailer.SendMail
Set Mailer = Nothing

Die Dialogbox sollte nun wie die folgende Abbildung aussehen:

Schritt 4 Klicken Sie auf OK, um den Schritt zu übernehmen. Der Steps Tab sieht nun wie folgende Abbildung aus:

Sie könnten jetzt weitere Schritte einfügen, so zum Beispiel eine Replizierung starten, oder ein beliebiges Transact SQL Statement auszuführen. Meine Empfehlung - spielen Sie ein bischen mit den Möglichkeiten herum, bevor Sie weitermachen.

Schritt 5 Wechseln Sie zum Tab Schedules. Wie die Mehrzahl bereits impliziert, können Sie hier mehrere Zeitpläne eintragen - für uns reicht ein einziger vollständig aus. Dafür klicken Sie auf New Schedule. Die New Schedule Dialogbox wird geöffnet. Geben Sie einen Namen ein (Mein Zeitplan) und klicken Sie auf die Change Schaltfläche:

Die nun folgende Dialogbox ist für die erste Betrachtung etwas übervoll. Allerdings wollen wir den Plan ja nur auf Daily umstellen, und die Uhrzeit auf 8 Uhr abends (siehe Abbildung). Wenn alle Änderung durchgeführt sind, klicken Sie auf OK - so oft, bis auch die letzte Dialogbox geschlossen ist. Der Job ist nun angelegt.

Den Task sofort starten

Der Job ist jetzt fertig angelegt und wartet darauf, vom SQL Server Agent gestartet zu werden (daher muß dieser SQL Server Service auch laufen!). Allerdings bin ich eine Spur zu ungeduldig, und möchte es gleich ausprobieren. Dazu klicke ich mit der rechten Maustaste auf den Job, und wähle Start Job vom Kontextmenü.

Nach einer kleineren Wartezeit kann ich dann die Email abholen:

Ich kann die XML Datei jetzt einfach mit Internet Explorer ansehen, oder mit Hilfe eines Scripts in meine lokale Datenbank übertragen. Die Grenzen sind hier nur die Vorstellungskraft.

Schlußbemerkung

Die Möglichkeit, Scripts in VBScript zu einem SQL Server Job hinzuzufügen erlaubt es, sehr leistungsstarke Scripts zu erzeugen, die am Datenbankserver automatisch ablaufen können. Man kann sich damit sogar eine Staging Lösung basteln - allerdings sollte dann der Web Server auf der gleichen Maschine laufen.

Verwandte Artikel

Automation - WSH versus Wget

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.