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.

    Creare un database SampleDB
  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 che mostra come verificare che SQL Server Agent sia stato installato.

  4. Creare una nuova commessa.

    Screenshot che mostra come creare un nuovo processo.

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

    Screenshot che mostra come creare una sottoattività del processo.

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

    Screenshot che mostra il sottosistema del processo.

    Screenshot che mostra l'azione del passaggio del processo.

  7. Creare una nuova pianificazione del processo.

    Screenshot della finestra di dialogo Nuovo processo con l'opzione Pianificazioni e l'opzione Nuovo evidenziate.

    Screenshot della finestra di dialogo Nuovo processo con l'opzione OK evidenziata.

  8. Avviare il processo.

    Screenshot che mostra come avviare il processo di SQL Server Agent.

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: