Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di Azure SQL
Questo articolo offre una panoramica di SQL Server Agent, ovvero un servizio Di Microsoft Windows che esegue attività amministrative pianificate (denominate processi) in SQL Server e Istanza gestita di SQL di Azure.
Importante
In Azure SQL Managed Instance, sono attualmente supportate la maggior parte, ma non tutte, le funzionalità di SQL Server Agent. Per informazioni dettagliate, vedere differenze T-SQL tra Istanza gestita di SQL di Azure e SQL Server.
Vantaggi di SQL Server Agent
SQL Server Agent usa SQL Server per archiviare le informazioni sui processi. Le attività contengono una o più fasi del lavoro. Ogni passaggio contiene una propria attività, ad esempio il backup di un database.
SQL Server Agent può eseguire un processo in base a una pianificazione, in risposta a un evento specifico o su richiesta. Ad esempio, se si vuole eseguire il backup di tutti i server aziendali ogni giorno feriale dopo l'orario lavorativo, è possibile automatizzare questa attività. Pianificare l'esecuzione del backup dopo le 22:00 dal lunedì al venerdì. Se il backup rileva un problema, SQL Server Agent può registrare l'evento e inviare una notifica.
Annotazioni
Per impostazione predefinita, il servizio SQL Server Agent viene disabilitato quando SQL Server viene installato, a meno che l'utente non scelga esplicitamente di avviare automaticamente il servizio.
Componenti di SQL Server Agent
SQL Server Agent usa i componenti seguenti per definire le attività da eseguire, quando eseguire le attività e come segnalare l'esito positivo o negativo delle attività.
Usare Gestione configurazione SQL Server per gestire il servizio SQL Server Agent e usare SQL Server Management Studio (SSMS) per gestire facilmente le proprietà di SQL Server Agent, i processi, gli avvisi, gli operatori e i proxy in un'interfaccia utente grafica.
Lavori
Un processo è una serie specificata di azioni eseguite da SQL Server Agent. Usare i compiti per definire un'attività amministrativa eseguibile una o più volte e monitorabile per il successo o il fallimento. Un processo può essere eseguito in un server locale o in più server remoti.
Importante
I processi di SQL Server Agent in esecuzione al momento di un evento di failover in un'istanza del cluster di failover di SQL Server non vengono ripresi dopo il failover in un altro nodo del cluster di failover. I processi di SQL Server Agent in esecuzione al momento della sospensione di un nodo Hyper-V non vengono ripresi se la sospensione causa un failover in un altro nodo. I processi che iniziano ma non vengono completati a causa di un evento di failover vengono registrati come avviati, ma non visualizzano voci di log aggiuntive per il completamento o l'errore. I processi di SQL Server Agent in questi scenari sembrano non essere mai terminati.
È possibile eseguire processi in diversi modi:
In base a una o più pianificazioni.
In risposta a uno o più avvisi.
Eseguendo la procedura memorizzata
sp_start_job
.
Ogni azione in un lavoro è una fase del lavoro. Ad esempio, un passaggio di processo può essere costituito dall'esecuzione di un'istruzione Transact-SQL, dall'esecuzione di un pacchetto SSIS o dall'esecuzione di un comando a un server Analysis Services. I passaggi di un'operazione vengono gestiti come parte di un'operazione.
Ogni passaggio del processo viene eseguito in un contesto di sicurezza specifico. Per i passaggi del processo che usano Transact-SQL, usare l'istruzione EXECUTE AS per impostare il contesto di sicurezza per il passaggio del processo. Per altri tipi di fasi di lavoro, utilizzare un account proxy per impostare il contesto di sicurezza della fase di lavoro.
Usare la stored procedure di sistema sp_help_job per ottenere informazioni su un lavoro specifico. Usare la tabella di sistema dbo.sysjobs per visualizzare informazioni sulle attività. Ad esempio, usare l'istruzione Transact-SQL (T-SQL) seguente per visualizzare informazioni su tutti i processi in un server:
USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;
Orari
Una pianificazione specifica quando viene eseguito un processo. Più di un lavoro può essere eseguito secondo la stessa programmazione, e più di una programmazione può essere applicata allo stesso lavoro. Per quanto riguarda quando un processo deve essere eseguito, una pianificazione può definire le condizioni seguenti:
Ogni volta che viene avviato SQL Server Agent.
Ogni volta che l'utilizzo della CPU del computer è a un livello definito come inattivo.
Una volta, in una data e un'ora specifiche.
Secondo una programmazione ricorrente.
Per ulteriori informazioni, vedere Creare e allegare programmi ai lavori.
Avvisi
Un avviso è una risposta automatica a un evento specifico. Ad esempio, un evento può essere un processo che si avvia oppure risorse di sistema che raggiungono una soglia specifica. Definire le condizioni in cui si verifica un avviso.
Un avviso può rispondere a una delle condizioni seguenti:
Eventi di SQL Server
Condizioni di prestazioni di SQL Server
Eventi di Strumentazione gestione Microsoft Windows (WMI) nel computer in cui è in esecuzione SQL Server Agent
Un avviso può eseguire le azioni seguenti:
Notificare uno o più operatori
Eseguire un'operazione
Per altre informazioni, vedere Avvisi.
Operatori
Un operatore definisce le informazioni di contatto per un individuo responsabile della manutenzione di una o più istanze di SQL Server. In alcune aziende, le responsabilità degli operatori vengono assegnate a un individuo. Nelle aziende con più server, molti utenti possono condividere le responsabilità degli operatori. Un operatore non contiene informazioni di sicurezza e non definisce un'entità di sicurezza.
SQL Server può inviare avvisi di notifica agli operatori tramite...
E-mail (posta elettronica)
Cercapersone (tramite posta elettronica)
net send
Annotazioni
Per inviare notifiche tramite net send, è necessario avviare il servizio Windows Messenger nel computer in cui risiede SQL Server Agent.
Importante
Le opzioni Cercapersone e net send verranno rimosse da SQL Server Agent in una versione futura di SQL Server. Evitare di usare queste funzionalità nel nuovo lavoro di sviluppo e pianificare la modifica delle applicazioni che attualmente usano queste funzionalità.
Per inviare notifiche agli operatori tramite posta elettronica o cercapersone, è necessario configurare SQL Server Agent per l'uso di Posta elettronica database. Per altre informazioni, vedere Posta elettronica database.
È possibile definire un operatore come alias per un gruppo di singoli utenti. In questo modo, tutti i membri di tale alias non vengono verificati contemporaneamente. Per altre informazioni, vedere Operatori.
Sicurezza per l'amministrazione di SQL Server Agent
SQL Server Agent usa i ruoli predefiniti del database SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole nel msdb
database per controllare l'accesso a SQL Server Agent per gli utenti che non sono membri del ruolo predefinito del server sysadmin . Oltre a questi ruoli predefiniti del database, i sottosistemi e i proxy consentono agli amministratori del database di assicurarsi che ogni passaggio del processo venga eseguito con le autorizzazioni minime necessarie per eseguire l'attività.
Ruoli
I membri dei ruoli predefiniti del database SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole in msdb
e i membri del ruolo predefinito del server sysadmin hanno accesso a SQL Server Agent. Un utente che non appartiene a nessuno di questi ruoli non può usare SQL Server Agent. Per altre informazioni sui ruoli usati da SQL Server Agent, vedere Implementare la sicurezza di SQL Server Agent.
Sottosistemi
Un sottosistema è un oggetto predefinito che rappresenta la funzionalità disponibile per un passaggio del processo. Ogni proxy ha accesso a uno o più sottosistemi. I sottosistemi forniscono sicurezza perché delimitano l'accesso alle funzionalità disponibili per un proxy. Ogni passaggio del processo viene eseguito nel contesto di un proxy, ad eccezione di Transact-SQL passaggi del processo. I passaggi del processo Transact-SQL usano il comando EXECUTE AS per impostare il contesto di sicurezza all'utente proprietario del processo.
SQL Server definisce i sottosistemi elencati nella tabella seguente:
Nome sottosistema | Descrizione |
---|---|
Microsoft ActiveX Script | Eseguire una fase di lavoro di scripting ActiveX. Avvertimento Il sottosistema di scripting ActiveX viene rimosso da SQL Server Agent in una versione futura di Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. |
Sistema operativo (CmdExec) | Eseguire un programma eseguibile. |
PowerShell | Eseguire un passaggio del processo di scripting di PowerShell. |
Server di distribuzione della replica | Eseguire un passaggio del processo che attiva l'agente di distribuzione della replica. |
Merge della replica | Eseguire un passaggio del processo che attiva l'agente della replica di merge. |
Lettore coda di replica | Eseguire un passaggio del processo che attiva l'Agente di Lettura della Coda di Replica. |
Snapshot della replica | Esegui un passaggio del processo che attiva l'Agente di Snapshot della Replicazione. |
Lettore log delle transazioni di replica | Eseguire un passaggio del processo che attiva l'agente di lettura dei log di replica. |
Comando di Servizi di Analisi | Eseguire un comando di Analysis Services. |
Query di Servizi di Analisi | Eseguire una query dei Analysis Services. |
Esecuzione pacchetti SSIS | Esegui un pacchetto SSIS. |
Annotazioni
Poiché Transact-SQL passaggi del processo non usano proxy, non esiste alcun sottosistema di SQL Server Agent per Transact-SQL passaggi del processo.
SQL Server Agent applica restrizioni del sottosistema anche quando l'entità di sicurezza per il proxy normalmente dispone dell'autorizzazione per eseguire l'attività nel passaggio del processo. Ad esempio, un proxy per un utente membro del ruolo predefinito del server sysadmin non può eseguire un passaggio di processo SSIS a meno che il proxy non abbia accesso al sottosistema SSIS, anche se l'utente può eseguire pacchetti SSIS.
Proxies
SQL Server Agent usa proxy per gestire i contesti di sicurezza. Un proxy può essere usato in più passaggi del processo. I membri del ruolo predefinito del server sysadmin possono creare proxy.
Ogni proxy corrisponde a una credenziale di sicurezza. Ogni proxy può essere associato a un set di sottosistemi e a un set di account di accesso. Il proxy può essere usato solo per i passaggi del processo che usano un sottosistema associato al proxy. Per creare un passaggio del processo che usa un proxy specifico, il proprietario del processo deve usare un account di accesso associato a tale proxy o a un membro di un ruolo con accesso senza restrizioni ai proxy. I membri del ruolo predefinito del server sysadmin hanno accesso illimitato ai proxy. I membri di SQLAgentUserRole, SQLAgentReaderRole o SQLAgentOperatorRole possono usare solo proxy a cui è stato concesso l'accesso specifico. A ogni utente membro di uno di questi ruoli predefiniti del database di SQL Server Agent deve essere concesso l'accesso a proxy specifici in modo che l'utente possa creare passaggi di processo che usano tali proxy.
Automatizzare l'amministrazione
Usare la procedura seguente per configurare SQL Server Agent per automatizzare l'amministrazione di SQL Server:
Stabilire quali attività amministrative o eventi del server si verificano regolarmente e se queste attività o eventi possono essere amministrate a livello di codice. Un'attività è un buon candidato per l'automazione se implica una sequenza prevedibile di passaggi e si verifica in un momento specifico o in risposta a un evento specifico.
Definire un set di processi, pianificazioni, avvisi e operatori usando SQL Server Management Studio, Transact-SQL script o SQL Server Management Objects (SMO). Per altre informazioni, vedere Creare lavori.
Eseguire i processi di SQL Server Agent definiti.
Annotazioni
Per l'istanza predefinita di SQL Server, il servizio SQL Server è denominato SQLSERVERAGENT. Per le istanze denominate, il servizio SQL Server Agent è denominato SQLAgent$instancename.
Se si eseguono più istanze di SQL Server, è possibile usare l'amministrazione multiserver per automatizzare le attività comuni in tutte le istanze. Per altre informazioni, vedere Amministrazione automatizzata in un'organizzazione.
Usare le attività seguenti per iniziare a usare SQL Server Agent:
Descrizione | Articolo |
---|---|
Viene descritto come configurare SQL Server Agent. | Configurazione di SQL Server Agent |
Descrive come avviare, arrestare e sospendere il servizio SQL Server Agent. | Avvio, arresto o sospensione del servizio SQL Server Agent |
Vengono descritte le considerazioni per specificare un account per il servizio SQL Server Agent. | Selezionare un account per il servizio SQL Server Agent |
Viene descritto come usare il log degli errori di SQL Server Agent. | Log degli errori di SQL Server Agent |
Si descrive come usare gli oggetti di prestazioni. | Usare oggetti di prestazione |
Descrive la creazione guidata del piano di manutenzione, ovvero un'utilità che consente di creare processi, avvisi e operatori per automatizzare l'amministrazione di un'istanza di SQL Server. | Usare la Creazione guidata del piano di manutenzione |
Viene descritto come automatizzare le attività amministrative usando SQL Server Agent. | Compiti Amministrativi Automatizzati (SQL Server Agent) |
NOSQLPS
A partire da SQL Server 2019, è possibile disabilitare SQLPS. Nella prima riga di un passaggio di processo del tipo PowerShell è possibile aggiungere #NOSQLPS
, che impedisce a SQL Agent di caricare automaticamente il modulo SQLPS. Ora il processo di SQL Agent esegue la versione di PowerShell installata nel computer e quindi è possibile usare qualsiasi altro modulo di PowerShell desiderato.
Per usare il modulo SqlServer nel passaggio di un processo di SQL Agent, è possibile inserire questo codice nelle prime due righe dello script.
#NOSQLPS
Import-Module -Name SqlServer