Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Creare un processo di SQL Server Agent utilizzando T-SQL

SQL Server Agent è un servizio di Microsoft Windows che esegue attività amministrative pianificate, denominate lavori in SQL Server.

T-SQL include un'ampia raccolta di stored procedure che gestiscono i processi di SQL Server Agent.

Qui ne useremo alcuni per creare e pianificare un processo di SQL Server Agent.

Se preferisci, puoi anche creare processi di SQL Server Agent tramite la GUI (in SSMS).

Abilita XP agente

Se è la prima volta che crei un processo di SQL Server Agent nell'istanza di SQL Server, probabilmente dovrai abilitare le stored procedure estese di SQL Server Agent (Agent XP).

Ecco come farlo utilizzando T-SQL ed ecco come farlo utilizzando la GUI di SSMS.

Dopo averlo fatto, puoi continuare e creare un processo di SQL Server Agent come quello di seguito.

Esempio

Ecco un esempio del codice utilizzato per creare e pianificare un processo di SQL Server Agent.

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Qui, utilizziamo cinque stored procedure per creare e pianificare il lavoro. La maggior parte di queste procedure accetta molti più argomenti (facoltativi) rispetto a quelli che ho usato in questo esempio. Per un elenco completo degli argomenti disponibili per ciascuna procedura, vedere i collegamenti nella tabella seguente.

Queste procedure memorizzate si trovano in msdb database e puoi vedere che abbiamo impostato msdb come database corrente prima di eseguirli. In alternativa, puoi qualificarli con il nome del database (ad es. msdb.dbo.sp_add_job... , ecc)

La tabella seguente fornisce una rapida panoramica di ciascuna procedura.

Procedura archiviata Descrizione
sp_add_job Aggiunge un nuovo lavoro eseguito dal servizio SQL Agent.

Per ulteriori informazioni, visitare il sito Web Microsoft.
sp_add_jobstep Aggiunge un passaggio che esegue l'operazione effettiva per il lavoro che è stato aggiunto con sp_add_job .

Nell'esempio sopra, aggiungiamo un passaggio per il backup di un database. Lo specifichiamo fornendo un comando T-SQL.

Il @retry_interval è in pochi minuti.

Per ulteriori informazioni, visitare il sito Web Microsoft.
sp_add_schedule Crea una pianificazione che può essere utilizzata da un numero qualsiasi di lavori.

In questo caso, abbiamo dato @freq_type un valore di 4 che è quotidiano. Abbiamo anche fornito @freq_interval un valore di 4 , che è anche quotidiano.

L'ora si basa su un formato di 24 ore e viene inserita nel modulo HHMMSS. Il nostro esempio utilizza 041000 , ovvero le 04:10:00.

Vedere il collegamento Microsoft di seguito per le varie opzioni disponibili durante l'impostazione della frequenza.

Per ulteriori informazioni, visitare il sito Web Microsoft.
sp_attach_schedule Imposta una pianificazione per un lavoro. Qui alleghiamo la pianificazione che abbiamo aggiunto con sp_add_schedule al lavoro che abbiamo aggiunto con sp_add_job .

Si noti che la pianificazione e il lavoro devono avere lo stesso proprietario.

Inoltre, è possibile impostare una pianificazione per più di un lavoro e un lavoro può essere eseguito su più di una pianificazione.

Per ulteriori informazioni, visitare il sito Web Microsoft.
sp_add_jobserver Indirizza il lavoro specificato al server specificato. Questo accetta anche un @server_name argomento per specificare il server.

Il valore predefinito è (LOCAL) per la macchina locale. Nel nostro esempio, abbiamo usato la macchina locale e quindi siamo stati in grado di omettere questo argomento.

Per ulteriori informazioni, visitare il sito Web Microsoft.

Visualizza il lavoro

Puoi usare il sp_help_job stored procedure in msdb database per visualizzare i processi di SQL Server Agent che sono stati creati sul server.

EXEC sp_help_job;

Ecco come appare sulla mia macchina di prova:

In questo caso ci sono tre lavori.

Puoi anche vedere i lavori in Esplora oggetti quando hai SQL Server Agent> Lavori nodo espanso.

Il sp_help_job stored procedure consente di fornire il nome o l'ID di un lavoro per ottenere informazioni più dettagliate su quel lavoro.

Esempio:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Risultato:

I risultati sono separati nei dettagli del lavoro principale, nelle fasi del lavoro, nelle pianificazioni del lavoro e nei server di destinazione del lavoro. Questo riflette praticamente le procedure memorizzate che abbiamo eseguito quando abbiamo creato il lavoro.

Consulta la documentazione Microsoft per sp_help_job per ulteriori informazioni, oltre a un elenco di altri argomenti che puoi fornire.

Verifica il lavoro

Puoi usare il sp_start_job stored procedure per verificare che il lavoro venga eseguito. Questa procedura accetta il nome o l'ID del lavoro ed eseguirà il lavoro non appena eseguirai la procedura.

Per un esempio, vedere Come eseguire un processo di SQL Server Agent utilizzando T-SQL.