Creare ed eseguire processi di SQL Server Agent in Linux

Si applica a:SQL Server - Linux

I processi di SQL Server vengono usati per eseguire regolarmente la stessa sequenza di comandi nel database SQL Server. Questa esercitazione fornisce un esempio di come creare un processo di SQL Server Agent in Linux usando sia Transact-SQL che SQL Server Management Studio (SSMS).

  • Installare SQL Server Agent in Linux
  • Creare un nuovo processo per eseguire backup giornalieri del database
  • Pianificare ed eseguire il processo
  • Eseguire gli stessi passaggi in SSMS (facoltativo)

Per problemi noti con SQL Server Agent in Linux, vedere le Note sulla versione di SQL Server 2017 in Linux.

Prerequisiti

Per completare l'esercitazione, è necessario soddisfare i prerequisiti seguenti:

I prerequisiti seguenti sono facoltativi:

Abilitare SQL Server Agent

Per usare SQL Server Agent in Linux, è necessario abilitare prima SQL Server Agent in un computer in cui è già installato SQL Server.

  1. Per abilitare SQL Server Agent, seguire questa procedura.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Riavviare SQL Server con il comando seguente:

    sudo systemctl restart mssql-server
    

Nota

A partire da SQL Server 2017 (14.x) CU 4, SQL Server Agent è incluso nel pacchetto mssql-server ed è disabilitato per impostazione predefinita. Per la configurazione di Agent precedente alla versione CU 4, vedere Installare SQL Server Agent in Linux.

Creare un database di esempio

Seguire questa procedura per creare un database di esempio denominato SampleDB. Questo database viene usato per il processo di backup giornaliero.

  1. Nel computer Linux aprire una sessione del terminale Bash.

  2. Usare sqlcmd per eseguire un comandi CREATE DATABASE Transact-SQL.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
    
  3. Verificare che il database sia stato creato elencando i database nel server.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
    

Creare un processo con Transact-SQL

La procedura seguente crea un processo di SQL Server Agent in Linux con i comandi di Transact-SQL. Il processo esegue un backup giornaliero del database di esempio SampleDB.

Suggerimento

È possibile usare qualsiasi client T-SQL per eseguire questi comandi. Ad esempio, in Linux è possibile usare Installare gli strumenti da riga di comando di SQL Server sqlcmd e bcp in Linux o l’Estensione SQL Server per Visual Studio Code. Da un server Windows remoto è anche possibile eseguire query in SQL Server Management Studio (SSMS) o usare l'interfaccia utente per la gestione dei processi, descritta nella sezione successiva.

  1. Usare sp_add_job per creare un processo denominato Daily SampleDB Backup.

    -- 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. Chiamare sp_add_jobstep per creare un passaggio del processo, che crea un backup del database SampleDB.

    -- 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. Creare quindi una pianificazione giornaliera per il processo con sp_add_schedule.

    -- 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. Associare la pianificazione al processo con sp_attach_schedule.

    -- 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. Usare sp_add_jobserver per assegnare il processo a un server di destinazione. In questo esempio la destinazione è il server locale.

    EXEC dbo.sp_add_jobserver
       @job_name = N'Daily SampleDB Backup',
       @server_name = N'(local)';
    GO
    
  6. Avviare il processo con sp_start_job.

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

Creare un processo con SSMS

È anche possibile creare e gestire i processi in modalità remota usando SQL Server Management Studio (SSMS) in Windows.

  1. Avviare SSMS in Windows e connettersi all'istanza di SQL Server in Linux. Per ulteriori informazioni, vedere Usare SQL Server Management Studio in Windows per gestire SQL Server in Linux.

  2. Verificare di aver creato un database di esempio denominato SampleDB.

    Create a SampleDB database
  3. Verificare che per SQL Agent sia stato installato SQL Server Agent in Linux e configurato correttamente. Cercare il segno più accanto a SQL Server Agent in Esplora oggetti. Se SQL Server Agent non è abilitato, provare a riavviare il servizio mssql-server in Linux.

    Screenshot showing how to verify SQL Server Agent was installed.

  4. Creare una nuova commessa.

    Screenshot showing how to create a new job.

  5. Assegnare un nome al processo e creare il passaggio del processo.

    Screenshot showing how to create a job step.

  6. Specificare il sottosistema che si vuole usare e l'azione che deve essere eseguita dal passaggio del processo.

    Screenshot showing job subsystem.

    Screenshot showing job step action.

  7. Creare una nuova pianificazione del processo.

    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. Avviare il processo.

    Screenshot showing how to Start the SQL Server Agent job.

Passaggio successivo

Questa esercitazione ha descritto come:

  • Installare SQL Server Agent in Linux
  • Usare Transact-SQL e le stored procedure di sistema per creare processi
  • Creare un processo che esegue i backup giornalieri del database
  • Usare l'interfaccia utente di SSMS per creare e gestire i processi

Esplorare ora altre funzionalità per la creazione e la gestione dei processi: