Geschrieben von: Christoph Wille
Kategorie: Server
This printed page brought to you by AlphaSierraPapa
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):
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:
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.
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.
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.
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.
This printed page brought to you by AlphaSierraPapa
Automation - WSH versus Wget
http:/www.aspheute.com/artikel/20000511.htm
©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.