Creare ed eseguire processi di SQL Server Agent in Linux

Si applica a: SQL Server (tutte le versioni supportate) - 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.

Prerequisites

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

  • Di seguito vengono indicati i prerequisiti del computer Linux:
    • SQL Server (RHEL, SLES o Ubuntu) con gli strumenti da riga di comando.

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 
  1. Riavviare SQL Server con il comando seguente:
sudo systemctl restart mssql-server

Nota

A partire da SQL Server 2017 CU4, SQL Server Agent è incluso nel pacchetto mssql-server ed è disabilitato per impostazione predefinita. Per la configurazione di Agent precedente alla versione CU4, 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 comando CREATE DATABASE di 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. In Linux, ad esempio, è possibile usare sqlcmd o 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 altre informazioni, vedere Gestire SQL Server in Linux con SSMS.

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

    Creare un database SampleDB
  3. Verificare che SQL Agent sia stato installato 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.

    Verificare che SQL Server Agent sia stato installato

  4. Creare un nuovo processo.

    Creare un nuovo processo

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

    Creare un passaggio del processo

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

    Sottosistema del processo

    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.

    Avviare il processo di SQL Server Agent

Passaggi successivi

In questa esercitazione sono state illustrate le procedure per:

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