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:

Die folgenden Voraussetzungen sind optional:

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.

  1. Um den SQL Server-Agent zu aktivieren, führen Sie den folgenden Schritt aus.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. 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.

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

  2. 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'
    
  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

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.

  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
    EXEC 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.

    -- 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. 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.

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

    Create a SampleDB database
  3. 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.

    Screenshot showing how to verify SQL Server Agent was installed.

  4. Erstellen Sie einen neuen Auftrag.

    Screenshot showing how to create a new job.

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

    Screenshot showing how to create a job step.

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

    Screenshot showing job subsystem.

    Screenshot showing job step action.

  7. Erstellen Sie einen neuen Auftragszeitplan.

    Screenshot of the New Job dialog box with the Schedules option highlighted and the New option called out.

    Screenshot of the New Job dialog box with the OK option called out.

  8. Starten Sie Ihren Auftrag.

    Screenshot showing how to Start the SQL Server Agent job.

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: