So erstellen Sie Jobs in der SQL Server Express Edition


82

Könnte mir bitte jemand erklären, wie man Jobs in SQL Server ExpressEdition schafft ?


6
Wenn Sie sich auf SQL Agent-Jobs beziehen, ist diese Funktionalität in der Express Edition nicht verfügbar. Siehe die Antwort auf diese Frage für andere Möglichkeiten: stackoverflow.com/questions/3788583/…
8kb

Express Edition unterstützt SQL Server Broker und Sie können einen benutzerdefinierten Mechanismus wie hier
Lukasz Szozda

Antworten:


123

SQL Server Express enthält keinen SQL Server-Agenten , daher können nicht nur SQL Agent-Jobs erstellt werden.

Sie können Folgendes tun:
Sie können Jobs "manuell" erstellen, indem Sie Batchdateien und SQL-Skriptdateien erstellen und über den Windows Task Scheduler ausführen.
Sie können Ihre Datenbank beispielsweise mit zwei Dateien wie folgt sichern:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

Legen Sie einfach beide Dateien in denselben Ordner und führen Sie die Batchdatei über den Windows Task Scheduler aus.

Die erste Datei ist nur eine Windows-Batchdatei, die das Dienstprogramm sqlcmd aufruft und eine SQL-Skriptdatei übergibt.
Die SQL-Skriptdatei enthält T-SQL. In meinem Beispiel ist es nur eine Zeile zum Sichern einer Datenbank, aber Sie können jedes T-SQL darin einfügen. Beispielsweise könnten Sie UPDATEstattdessen einige Abfragen durchführen.


Wenn die Jobs, die Sie erstellen möchten, für Sicherungen, Indexwartungen oder Integritätsprüfungen bestimmt sind, können Sie auch die hervorragende Wartungslösung von Ola Hallengren verwenden.

Es besteht aus einer Reihe gespeicherter Prozeduren (und SQL Agent-Jobs für Nicht-Express-Editionen von SQL Server). In den häufig gestellten Fragen finden Sie einen Abschnitt zum Ausführen der Jobs in SQL Server Express:

Wie fange ich mit der SQL Server-Wartungslösung unter SQL Server Express an?

SQL Server Express hat keinen SQL Server-Agenten. Daher muss die Ausführung der gespeicherten Prozeduren mithilfe von Cmd-Dateien und geplanten Windows-Aufgaben geplant werden. Folge diesen Schritten.

SQL Server Express hat keinen SQL Server-Agenten. Daher muss die Ausführung der gespeicherten Prozeduren mithilfe von Cmd-Dateien und geplanten Windows-Aufgaben geplant werden. Folge diesen Schritten.

  1. Laden Sie MaintenanceSolution.sql herunter.

  2. Führen Sie MaintenanceSolution.sql aus. Dieses Skript erstellt die gespeicherten Prozeduren, die Sie benötigen.

  3. Erstellen Sie Cmd-Dateien, um die gespeicherten Prozeduren auszuführen. Beispiel:
    sqlcmd -E -S. \ SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C: \ Backup ', @BackupType =' FULL '" -b -o C: \ Log \ DatabaseBackup.txt

  4. Erstellen Sie unter Geplante Windows-Aufgaben Aufgaben zum Aufrufen der Cmd-Dateien.

  5. Planen Sie die Aufgaben.

  6. Starten Sie die Aufgaben und überprüfen Sie, ob sie erfolgreich abgeschlossen wurden.


1
Wo soll ich Anmeldeinformationen angeben?
HasanG

1
@ HasanGürsoy Wenn Sie eine geplante Aufgabe erstellen, die SQLCMD ausführt (mit oder ohne BAT-Datei), würde ich empfehlen, für die Windows-Authentifizierung den Parameter "-E" von SQLCMD zu verwenden. Damit dies funktioniert, definieren Sie eine SQL Server-Anmeldung für den Windows-Benutzer, der Eigentümer Ihrer geplanten Windows-Aufgabe ist. Wenn nicht klar ist, unter welchen Windows-Anmeldungen die Aufgabe ausgeführt wird, geben Sie "WHOAMI" (DOS-Befehl) in die BAT-Datei ein und erfassen Sie die Ausgabe der BAT-Datei, um zu sehen, wer ausgeführt wird.
Doug_Ivison

@ HasanGürsoy Oder für die SQL Server-Authentifizierung würde ich das Kennwort in die geplante Windows-Aufgabe einfügen (wobei die Berechtigungen bestimmen, wer es lesen kann), anstatt es irgendwo in einer Datei abzulegen. Es wird in der Befehlszeile der BAT-Datei angezeigt. Wenn es der erste Parameter ist, der an die BAT-Datei übergeben wird, können Sie ihn in der BAT-Datei als% 1 bezeichnen, beispielsweise in der SQLCMD-Zeile.
Doug_Ivison

41

Die Funktionalität zum Erstellen von SQL Agent-Jobs ist in SQL Server Express Edition nicht verfügbar. Eine Alternative besteht darin, eine Batchdatei auszuführen, die ein SQL-Skript mit Windows Task Scheduler ausführt.

Erstellen Sie dazu zunächst eine Batch-Datei mit dem Namen sqljob.bat

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

Ersetzen Sie die servername, username, passwordund pathmit Ihnen.

Erstellen Sie dann die SQL- Skriptdatei mit dem Namen sqljob.sql

USE [databasename]
--T-SQL commands go here
GO

Ersetzen Sie das [databasename]durch Ihren Datenbanknamen. Das USEund GOist erforderlich, wenn Sie das SQL-Skript schreiben.

sqlcmdist ein Befehlszeilenprogramm zum Ausführen von SQL-Skripten. Führen Sie nach dem Erstellen dieser beiden Dateien die Batchdatei mit dem Windows Task Scheduler aus.

NB: Für diese Frage wurde bereits eine fast gleiche Antwort veröffentlicht. Ich fand es jedoch unvollständig, da es keine Angaben zu den Anmeldeinformationen mit machte sqlcmd.


Wo würde ich diese sqljob.sql speichern? und wie kann ich sagen, wann es ausgeführt wird?
WTFZane

1
@WTFZane, es spielt keine Rolle, solange der Speicherort von dem verfügbar ist, den die Batchdatei ausführt. (Ersetzen path of sqljob.sqlSie im obigen Skript durch den von Ihnen verwendeten Speicherort.) Denken Sie daran, dass eine *.sqlDatei hier nichts anderes als eine Textdatei ist.
Abel

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.