Freigeben über


Erstellen und Ausführen von SQL Server-Agent Aufträgen unter Linux

Gilt für:SQL Server unter Linux

SQL Server Aufträge werden verwendet, um regelmäßig dieselbe Reihenfolge von Befehlen in Ihrer SQL Server-Datenbank auszuführen. Dieses Lernprogramm enthält ein Beispiel zum Erstellen eines SQL Server-Agent Auftrags unter Linux mit Transact-SQL und SQL Server Management Studio (SSMS).

  • Installieren von 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)

Bekannte Probleme mit SQL Server-Agent unter Linux finden Sie unter SQL Server für Linux: Bekannte Probleme.

Voraussetzungen

Zur Durchführung dieses Tutorials ist Folgendes erforderlich:

Die folgenden Voraussetzungen sind optional:

Aktivieren von SQL Server-Agent

Um SQL Server-Agent unter Linux zu verwenden, müssen Sie zuerst SQL Server-Agent auf einem Computer aktivieren, auf dem bereits SQL Server installiert ist.

  1. Führen Sie den folgenden Befehl aus, um SQL Server-Agent zu aktivieren.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Starten Sie SQL Server mit dem folgenden Befehl neu:

    sudo systemctl restart mssql-server
    

Hinweis

Ab SQL Server 2017 (14.x) CU 4 ist SQL Server-Agent im paket mssql-server enthalten und ist standardmäßig deaktiviert. Informationen zum Einrichten des Agents vor CU 4 finden Sie unter Install 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.

  1. Öffnen Sie auf Ihrem Linux-Computer eine Bash-Terminalsitzung.

  2. Verwenden Sie sqlcmd, um einen befehl Transact-SQL CREATE DATABASE auszuführen.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
    
  3. Ü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

Die folgenden Schritte erstellen 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 Sie die sqlcmd- und bcp-SQL Server Befehlszeilentools unter Linux oder SQL Server Erweiterung für Visual Studio Code verwenden. Über eine Remote-Windows Server können Sie auch Abfragen in SQL Server Management Studio (SSMS) ausführen oder die Benutzeroberfläche für die Auftragsverwaltung verwenden, die im nächsten Abschnitt beschrieben wird.

  1. 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
    
    EXECUTE dbo.sp_add_job @job_name = N'Daily SampleDB Backup';
    GO
    
  2. Rufen Sie sp_add_jobstep auf, um einen Auftragsschritt zu erstellen, der eine Sicherung der SampleDB-Datenbank erstellt.

    EXECUTE 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
    
  3. Erstellen Sie dann mit sp_add_schedule einen täglichen Zeitplan für Ihren Auftrag.

    -- Creates a schedule called 'Daily'
    EXECUTE dbo.sp_add_schedule
        @schedule_name = N'Daily SampleDB',
        @freq_type = 4,
        @freq_interval = 1,
        @active_start_time = 233000;
    
    USE msdb;
    GO
    
  4. Fügen Sie mit sp_attach_schedule den Auftragszeitplan dem Auftrag an.

    -- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. Verwenden Sie sp_add_jobserver, um den Auftrag einem Zielserver zuzuweisen. In diesem Beispiel ist das Ziel der lokale Server.

    EXECUTE dbo.sp_add_jobserver
        @job_name = N'Daily SampleDB Backup',
        @server_name = N'(local)';
    GO
    
  6. Starten Sie den Auftrag mit sp_start_job.

    EXECUTE dbo.sp_start_job N' Daily SampleDB Backup';
    GO
    

Erstellen eines Jobs mit SSMS

Sie können Aufträge auch remote mithilfe von SQL Server Management Studio (SSMS) auf Windows erstellen und verwalten.

  1. Starten Sie SSMS auf Windows, und stellen Sie eine Verbindung mit Ihrer Linux-SQL Server-Instanz her. Weitere Informationen finden Sie unter Use SQL Server Management Studio on Windows to manage SQL Server für Linux.

  2. Bestätigen Sie, dass Sie eine Beispieldatenbank mit dem Namen SampleDB erstellt haben.

    Screenshot der Erstellung einer SampleDB-Datenbank.

  3. Vergewissern Sie sich, dass der SQL-Agent Install-SQL Server-Agent unter Linux war und ordnungsgemäß konfiguriert wurde. Suchen Sie im Objekt-Explorer nach dem Pluszeichen neben SQL Server-Agent. Wenn SQL Server-Agent nicht aktiviert ist, starten Sie den dienst mssql-server unter Linux neu.

    Screenshot zeigt, wie überprüft werden kann, ob SQL Server-Agent installiert ist.

  4. Erstellen Sie eine neue Stelle.

    Screenshot, der zeigt, wie man einen neuen Auftrag erstellt.

  5. Geben Sie Ihrem Auftrag einen Namen, und erstellen Sie den Auftragsschritt.

    Screenshot, der zeigt, wie ein Auftragsschritt erstellt wird.

  6. Geben Sie an, welches Subsystem Sie verwenden möchten, und was der Auftragsschritt ausführen soll.

    Screenshot des Dialogfelds

    Screenshot des Dialogfelds

  7. Erstellen Sie einen neuen Auftragszeitplan.

    Screenshot: Dialogfeld „Neuer Auftrag“ mit hervorgehobener Option „Zeitpläne“ und umrandeter Option „Neu...“

    Screenshot: Dialogfeld „Neuer Auftrag“ mit umrandeter Option „OK“

  8. Starten Sie Ihren Job.

    Screenshot, der zeigt, wie der SQL Server-Agent-Job gestartet wird.

Nächster Schritt

In diesem Tutorial haben Sie Folgendes gelernt:

  • Installieren von 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: