Erstellen und Ausführen eines SQL Server-Agent-Auftrags unter Linux
Gilt für: SQL Server – Linux
SQL Server-Aufträge werden verwendet, um regelmäßig dieselbe Befehlssequenz in Ihrer SQL Server-Datenbank auszuführen. Dieses Tutorial enthält ein Beispiel für das Erstellen eines SQL Server-Agent-Auftrags unter Linux mithilfe von Transact-SQL und SQL Server Management Studio (SSMS).
- Installieren des SQL Server-Agent unter Linux
- Erstellen eines neuen Auftrags zum Ausführen täglicher Datenbanksicherungen
- Planen und Ausführen des Auftrags
- Ausführen der gleichen Schritte in SSMS (optional)
Informationen zu bekannten Problemen mit dem SQL Server-Agent unter Linux finden Sie in den Versionshinweisen für SQL Server 2017 unter Linux.
Voraussetzungen
Zur Durchführung dieses Tutorials ist Folgendes erforderlich:
Ein Linux-Computer, der folgende Voraussetzungen erfüllt:
- Schnellstart: Installieren von SQL Server und Erstellen einer Datenbank unter Red Hat
- Schnellstart: Installieren von SQL Server und Erstellen einer Datenbank unter SUSE Linux Enterprise Server
- Schnellstart: Installieren von SQL Server und Erstellen einer Datenbank unter Ubuntu mit den Befehlszeilentools.
Die folgenden Voraussetzungen sind optional:
- Windows-Computer mit SSMS:
- Herunterladen von SQL Server Management Studio (SSMS) für optionale SSMS-Schritte.
Aktivieren des SQL Server-Agents.
Um den SQL Server-Agent unter Linux verwenden zu können, müssen Sie den SQL Server-Agent zuerst auf einem Computer aktivieren, auf dem bereits SQL Server installiert ist.
Um den SQL Server-Agent zu aktivieren, führen Sie den folgenden Schritt aus.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
Starten Sie SQL Server mithilfe des folgenden Befehls neu:
sudo systemctl restart mssql-server
Hinweis
Ab SQL Server 2017 (14.x) CU 4 ist der SQL Server-Agent im mssql-server
-Paket enthalten und standardmäßig deaktiviert. Informationen über das Setup eines Agent vor CU 4 finden Sie unter Installieren des SQL Server-Agent unter Linux.
Erstellen einer Beispieldatenbank
Führen Sie die folgenden Schritte aus, um eine Beispieldatenbank mit dem Namen SampleDB
zu erstellen. Diese Datenbank wird für den täglichen Sicherungsauftrag verwendet.
Öffnen Sie auf Ihrem Linux-Computer eine Bash-Terminalsitzung.
Verwenden Sie sqlcmd zum Ausführen von Transact-SQL
CREATE DATABASE
-Befehlen./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
Überprüfen Sie, ob die Datenbank erstellt wurde, indem Sie die Datenbanken auf dem Server auflisten.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
Erstellen eines Auftrags mit Transact-SQL
Mit den folgenden Schritten erstellen Sie einen SQL Server-Agent-Auftrag unter Linux mit Transact-SQL-Befehlen. Der Auftrag führt eine tägliche Sicherung der Beispieldatenbank SampleDB
aus.
Tipp
Sie können einen beliebigen T-SQL-Client verwenden, um diese Befehle auszuführen. Beispielsweise können Sie unter Linux Installieren der SQL Server-Befehlszeilentools sqlcmd und bcp unter Linux oder SQL Server-Erweiterung für Visual Studio Code verwenden. Von einem Remote-Windows-Server aus können Sie auch Abfragen in SQL Server Management Studio (SSMS) ausführen oder die Benutzeroberflächen-Schnittstelle für die Auftragsverwaltung verwenden, die im nächsten Abschnitt beschrieben wird.
Führen Sie sp_add_job aus, um einen Auftrag namens
Daily SampleDB Backup
zu erstellen.-- Adds a new job executed by the SQLServerAgent service -- called 'Daily SampleDB Backup' USE msdb; GO EXEC dbo.sp_add_job @job_name = N'Daily SampleDB Backup'; GO
Rufen Sie sp_add_jobstep auf, um einen Auftragsschritt zu erstellen, der eine Sicherung der
SampleDB
-Datenbank erstellt.-- Adds a step (operation) to the job EXEC sp_add_jobstep @job_name = N'Daily SampleDB Backup', @step_name = N'Backup database', @subsystem = N'TSQL', @command = N'BACKUP DATABASE SampleDB TO DISK = \ N''/var/opt/mssql/data/SampleDB.bak'' WITH NOFORMAT, NOINIT, \ NAME = ''SampleDB-full'', SKIP, NOREWIND, NOUNLOAD, STATS = 10', @retry_attempts = 5, @retry_interval = 5; GO
Erstellen Sie dann mit sp_add_schedule einen täglichen Zeitplan für Ihren Auftrag.
-- Creates a schedule called 'Daily' EXEC dbo.sp_add_schedule @schedule_name = N'Daily SampleDB', @freq_type = 4, @freq_interval = 1, @active_start_time = 233000; USE msdb; GO
Fügen Sie mit sp_attach_schedule den Auftragszeitplan dem Auftrag an.
-- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job EXEC sp_attach_schedule @job_name = N'Daily SampleDB Backup', @schedule_name = N'Daily SampleDB'; GO
Verwenden Sie sp_add_jobserver, um den Auftrag einem Zielserver zuzuweisen. In diesem Beispiel ist das Ziel der lokale Server.
EXEC dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GO
Starten Sie den Auftrag mit sp_start_job.
EXEC dbo.sp_start_job N' Daily SampleDB Backup' ; GO
Erstellen eines Auftrags mit SSMS
Sie können Aufträge mithilfe von SQL Server Management Studio (SSMS) auch remote unter Windows erstellen und verwalten.
Starten Sie SSMS unter Windows, und stellen Sie eine Verbindung mit Ihrer Linux-SQL Server-Instanz her. Weitere Informationen finden Sie unter Verwenden von SQL Server Management Studio unter Windows zum Verwalten von SQL Server für Linux.
Bestätigen Sie, dass Sie eine Beispieldatenbank mit dem Namen
SampleDB
erstellt haben.Bestätigen Sie, dass der SQL Server-Agent unter Linux installiert und ordnungsgemäß konfiguriert wurde. Suchen Sie im Objekt-Explorer das Pluszeichen neben SQL Server-Agent. Wenn SQL Server-Agent nicht aktiviert ist, versuchen Sie, den mssql-server-Dienst unter Linux neu zu starten.
Erstellen Sie einen neuen Auftrag.
Geben Sie Ihrem Auftrag einen Namen, und erstellen Sie den Auftragsschritt.
Geben Sie an, welches Subsystem Sie verwenden möchten, und was der Auftragsschritt ausführen soll.
Erstellen Sie einen neuen Auftragszeitplan.
Starten Sie Ihren Auftrag.
Nächster Schritt
In diesem Tutorial haben Sie Folgendes gelernt:
- Installieren des SQL Server-Agent unter Linux
- Verwenden von Transact-SQL und gespeicherten Systemprozeduren zum Erstellen von Aufträgen
- Erstellen eines Auftrags, der tägliche Datenbanksicherungen ausführt
- Verwenden der SSMS-Benutzeroberfläche zum Erstellen und Verwalten von Aufträgen
Lernen Sie als nächstes weitere Möglichkeiten zum Erstellen und Verwalten von Aufträgen kennen: