SQL Server AgentSQL Server Agent

SQL ServerSQL Server Agent è un servizio di Microsoft Windows per l'esecuzione di attività amministrative pianificate, denominate processi in SQL Server 2017SQL Server 2017. Agent is a Microsoft Windows service that executes scheduled administrative tasks, which are called jobs in SQL Server 2017SQL Server 2017.

Contenuto dell'argomentoIn This Topic

Vantaggi di SQL Server AgentBenefits of SQL Server Agent

SQL ServerSQL Server Agent viene utilizzato SQL ServerSQL Server . Agent uses SQL ServerSQL Server to store job information. I processi sono costituiti da uno o più passaggi,Jobs contain one or more job steps. ciascuno dei quali contiene un'attività, ad esempio il backup di un database.Each step contains its own task, for example, backing up a database.

SQL ServerSQL Server Agent è in grado di eseguire un processo incluso in una pianificazione, in risposta a un evento specifico, oppure su richiesta. Agent can run a job on a schedule, in response to a specific event, or on demand. Se, ad esempio, l'esigenza è quella di eseguire il backup di tutti i server aziendali ogni sera in orario non lavorativo, è possibile automatizzare questa attività,For example, if you want to back up all the company servers every weekday after hours, you can automate this task. Pianificare l'esecuzione del backup dal lunedì al venerdì dopo le 22.00. In caso di problemi durante l'operazione, SQL Server Agent potrà registrare l'evento e inviarne notifica all'utente.Schedule the backup to run after 22:00 Monday through Friday; if the backup encounters a problem, SQL Server Agent can record the event and notify you.

Nota

Per impostazione predefinita, all'installazione di SQL ServerSQL Server il servizio SQL Server 2017SQL Server 2017 Agent viene disabilitato, a meno che l'utente non scelga esplicitamente l'avvio automatico del servizio.By default, the SQL ServerSQL Server Agent service is disabled when SQL Server 2017SQL Server 2017 is installed unless the user explicitly chooses to autostart the service.

Componenti di SQL Server AgentSQL Server Agent Components

SQL ServerSQL Server Agent utilizza i componenti seguenti per definire le attività da eseguire, quando eseguirle e come fornire informazioni in merito alla riuscita o meno delle attività. Agent uses the following components to define the tasks to be performed, when to perform the tasks, and how to report the success or failure of the tasks.

processiJobs

Un processo è una serie specificata di azioni eseguite da SQL ServerSQL Server Agent.A job is a specified series of actions that SQL ServerSQL Server Agent performs. I processi consentono la definizione di un'attività amministrativa eseguibile una o più volte e il monitoraggio della riuscita o non riuscita di ogni esecuzione.Use jobs to define an administrative task that can be run one or more times and monitored for success or failure. Un processo può essere eseguito su un server locale oppure su più server remoti.A job can run on one local server or on multiple remote servers.

Importante

SQL ServerSQL Server Agent che sono in esecuzione al momento di un evento di failover su un'istanza del cluster di failover SQL ServerSQL Server non riprendono dopo il failover su un altro nodo del cluster di failover. Agent jobs that are running at the time of a failover event on a SQL ServerSQL Server failover cluster instance do not resume after failover to another failover cluster node. SQL ServerSQL Server I processi di Agent che sono in esecuzione quando un nodo Hyper-V viene messo in pausa non riprendono se la pausa provoca un failover in un altro nodo. Agent jobs that are running at the time a Hyper-V node is paused do not resume if the pause causes a failover to another node. I processi che iniziano ma che non riescono a essere completati a causa di un evento di failover vengono registrati come avviati, ma non mostrano voci di log aggiuntive per il completamento o l'errore.Jobs that begin but fail to complete because of a failover event are logged as started, but do not show additional log entries for completion or failure. SQL ServerSQL Server Agent in questi scenari sembrano non avere mai termine. Agent jobs in these scenarios appear to have never ended.

È possibile eseguire i processi in diversi modi:You can run jobs in several ways:

  • In base a una o più pianificazioni.According to one or more schedules.

  • In risposta a uno o più avvisi.In response to one or more alerts.

  • Tramite l'esecuzione della stored procedure sp_start_job.By executing the sp_start_job stored procedure.

Ogni azione di un processo viene definita passaggio del processo.Each action in a job is a job step. Un passaggio del processo, ad esempio, può essere costituito dall'esecuzione di un'istruzione Transact-SQLTransact-SQL , di un pacchetto di SSISSSIS o di un comando in un server Analysis Services.For example, a job step might consist of running a Transact-SQLTransact-SQL statement, executing an SSISSSIS package, or issuing a command to an Analysis Services server. I passaggi del processo vengono gestiti come parte di un processo.Job steps are managed as part of a job.

Ogni passaggio del processo viene eseguito in un contesto di sicurezza specifico.Each job step runs in a specific security context. Nel caso dei passaggi di processo che utilizzano Transact-SQLTransact-SQL, specificare l'istruzione EXECUTE AS per impostare il contesto di sicurezza corrispondente.For job steps that use Transact-SQLTransact-SQL, use the EXECUTE AS statement to set the security context for the job step. Per gli altri tipi di passaggi di processo, utilizzare un account proxy per impostare il contesto di sicurezza corrispondente.For other types of job steps, use a proxy account to set the security context for the job step.

PianificazioniSchedules

Una pianificazione specifica quando viene eseguito un processo.A schedule specifies when a job runs. È possibile eseguire più processi sulla stessa pianificazione e applicare più di una pianificazione allo stesso processo.More than one job can run on the same schedule, and more than one schedule can apply to the same job. Una pianificazione consente di definire le condizioni seguenti relativi al momento in cui un processo viene eseguito:A schedule can define the following conditions for the time when a job runs:

  • All'avvio di SQL ServerSQL Server Agent.Whenever SQL ServerSQL Server Agent starts.

  • Quando l'utilizzo della CPU del computer corrisponde al livello di inattività.Whenever CPU utilization of the computer is at a level you have defined as idle.

  • Una sola volta in corrispondenza di una data e un'ora specifiche.One time, at a specific date and time.

  • Su base periodica.On a recurring schedule.

Per altre informazioni, vedere Creare e collegare le pianificazioni ai processi.For more information, see Create and Attach Schedules to Jobs.

AvvisiAlerts

Un avviso è una risposta automatica a un evento specifico.An alert is an automatic response to a specific event. Ad esempio, un evento può essere generato dall'avvio di un processo o dal raggiungimento della soglia specifica delle risorse di sistema.For example, an event can be a job that starts or system resources that reach a specific threshold. Le condizioni per la generazione di un avviso vengono definite dall'utente.You define the conditions under which an alert occurs.

Un avviso può rispondere a una delle condizioni seguenti:An alert can respond to one of the following conditions:

  • SQL ServerSQL Server eventi events

  • SQL ServerSQL Server condizioni delle prestazioni performance conditions

  • Eventi WMI (Microsoft Windows Management Instrumentation) nel computer in cui viene eseguito SQL Server AgentMicrosoft Windows Management Instrumentation (WMI) events on the computer where SQL Server Agent is running

Un avviso può eseguire le azioni seguenti:An alert can perform the following actions:

  • Invio di una notifica a uno o più operatoriNotify one or more operators

  • Esecuzione di un processoRun a job

Per altre informazioni, vedere Avvisi.For more information, see Alerts.

OperatoriOperators

Un operatore definisce le informazioni di contatto relative al responsabile della manutenzione di una o più istanze di SQL ServerSQL Server.An operator defines contact information for an individual responsible for the maintenance of one or more instances of SQL ServerSQL Server. In alcune organizzazioni le mansioni di operatore vengono assegnate a un unico dipendente.In some enterprises, operator responsibilities are assigned to one individual. In organizzazioni con più server, tali mansioni possono essere ripartite tra più dipendenti.In enterprises with multiple servers, many individuals can share operator responsibilities. Un operatore non include informazioni di sicurezza e non definisce alcuna entità di sicurezza.An operator does not contain security information, and does not define a security principal.

SQL ServerSQL Server è in grado di segnalare gli avvisi agli operatori tramite: can notify operators of alerts through one or more of the following:

  • Posta elettronicaE-mail

  • Cercapersone (tramite posta elettronica)Pager (through e-mail)

  • net sendnet send

Nota

Per inviare notifiche usando Net Send, è necessario che il servizio Windows Messenger sia avviato nel computer in cui si trova SQL ServerSQL Server Agent.To send notifications by using net send, the Windows Messenger service must be started on the computer where SQL ServerSQL Server Agent resides.

Importante

Le opzioni Cercapersone e Net Send verranno rimosse da SQL ServerSQL Server Agent in una versione futura di SQL ServerSQL Server.The Pager and net send options will be removed from SQL ServerSQL Server Agent in a future version of SQL ServerSQL Server. Evitare pertanto di utilizzarle in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui sono state implementate.Avoid using these features in new development work, and plan to modify applications that currently use these features.

Per inviare notifiche agli operatori usando la posta elettronica o i cercapersone, è necessario configurare SQL ServerSQL Server Agent per l'uso di Posta elettronica database.To send notifications to operators by using e-mail or pagers, you must configure SQL ServerSQL Server Agent to use Database Mail. Per altre informazioni, vedere Posta elettronica database.For more information, see Database Mail.

È possibile definire un operatore come alias assegnato a un gruppo di utenti.You can define an operator as the alias for a group of individuals. In questo modo la notifica può raggiungere contemporaneamente tutti i membri dell'alias.In this way, all members of that alias are notified at the same time. Per altre informazioni, vedere Operatori.For more information, see Operators.

Sicurezza per l'amministrazione di SQL Server AgentSecurity for SQL Server Agent Administration

SQL ServerSQL Server Agent utilizza i ruoli predefiniti del database SQLAgentUserRole, SQLAgentReaderRolee SQLAgentOperatorRole nel database msdb per controllare l'accesso a SQL ServerSQL Server Agent per gli utenti che non sono membri del ruolo predefinito del server sysadmin . Agent uses the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in the msdb database to control access to SQL ServerSQL Server Agent for users who are not members of the sysadmin fixed server role. Sottosistemi e proxy consentono agli amministratori del database di garantire l'esecuzione di tutti i passaggi di processo con le autorizzazioni minime necessarie all'esecuzione della relativa attività.In addition to these fixed database roles, subsystems and proxies help database administrators ensure that each job step runs with the minimum permissions required to perform its task.

RuoliRoles

I membri dei ruoli predefiniti del database SQLAgentUserRole, SQLAgentReaderRolee SQLAgentOperatorRole in msdbe i membri del ruolo predefinito del server sysadmin hanno accesso a SQL ServerSQL Server Agent.Members of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in msdb, and members of the sysadmin fixed server role have access to SQL ServerSQL Server Agent. Un utente che non appartiene a nessuno di questi ruoli non può utilizzare SQL ServerSQL Server Agent.A user that does not belong to any of these roles cannot use SQL ServerSQL Server Agent. Per altre informazioni sui ruoli usati da SQL ServerSQL Server Agent, vedere Implementazione della sicurezza di SQL Server Agent.For more information on the roles used by SQL ServerSQL Server Agent, see Implement SQL Server Agent Security.

SottosistemiSubsystems

Un sottosistema è un oggetto predefinito che rappresenta funzionalità disponibili per un passaggio di processo.A subsystem is a predefined object that represents functionality that is available to a job step. Ogni proxy ha accesso a uno o più sottosistemi.Each proxy has access to one or more subsystems. I sottosistemi offrono sicurezza in quanto delimitano l'accesso alle funzionalità disponibili per un proxy.Subsystems provide security because they delimit access to the functionality that is available to a proxy. Ogni passaggio di processo viene eseguito nel contesto di un proxy, ad eccezione dei passaggi di processo Transact-SQLTransact-SQL .Each job step runs in the context of a proxy, except for Transact-SQLTransact-SQL job steps. Transact-SQLTransact-SQL utilizzano il comando EXECUTE AS per impostare il contesto di sicurezza. job steps use the EXECUTE AS command to set the security context.

SQL ServerSQL Server vengono definiti i sottosistemi inclusi nella tabella seguente: defines the subsystems listed in the following table:

Nome sottosistemaSubsystem name DescriptionDescription
Script Microsoft ActiveXMicrosoft ActiveX Script Esegue un passaggio di processo con script ActiveX.Run an ActiveX scripting job step.

Avviso Il sottosistema di scripting ActiveX verrà rimosso da SQL ServerSQL Server Agent in una versione futura di MicrosoftMicrosoft SQL ServerSQL Server.Warning The ActiveX Scripting subsystem will be removed from SQL ServerSQL Server Agent in a future version of MicrosoftMicrosoft SQL ServerSQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
Sistema operativo (CmdExec)Operating System (CmdExec) Esegue un programma eseguibile.Run an executable program.
PowerShellPowerShell Esegue un passaggio di processo con script di PowerShell.Run a PowerShell scripting job step.
Server di distribuzione replicheReplication Distributor Esegue un passaggio di processo tramite cui viene attivata l'utilità Agente distribuzione repliche.Run a job step that activates the replication Distribution Agent.
Merge replicheReplication Merge Esegue un passaggio di processo tramite cui viene attivata l'utilità Agente merge repliche.Run a job step that activates the replication Merge Agent.
Lettura coda replicheReplication Queue Reader Esegue un passaggio di processo tramite cui viene attivata l'utilità Agente di lettura coda repliche.Run a job step that activates the replication Queue Reader Agent.
Snapshot replicheReplication Snapshot Esegue un passaggio di processo tramite cui viene attivata l'utilità Agente snapshot repliche.Run a job step that activates the replication Snapshot Agent.
Lettura log replicheReplication Transaction Log Reader Esegue un passaggio di processo tramite cui viene attivata l'utilità Agente lettura log repliche.Run a job step that activates the replication Log Reader Agent.
Analysis ServicesAnalysis Services Command Command Esegue un comando di Analysis ServicesAnalysis Services .Run an Analysis ServicesAnalysis Services command.
Analysis ServicesAnalysis Services Query Query Esegue una query di Analysis ServicesAnalysis Services .Run an Analysis ServicesAnalysis Services query.
SSISSSIS esecuzione del pacchetto package execution Esegue un pacchetto SSISSSIS .Run an SSISSSIS package.
Nota

Poiché i passaggi di processo Transact-SQLTransact-SQL non utilizzano proxy, non è disponibile alcun sottosistema di SQL ServerSQL Server per i passaggi di processo Transact-SQLTransact-SQL .Because Transact-SQLTransact-SQL job steps do not use proxies, there is no SQL ServerSQL Server Agent subsystem for Transact-SQLTransact-SQL job steps.

SQL ServerSQL Server Agent applica restrizioni di sottosistema anche quando l'entità di sicurezza per il proxy disporrebbe dell'autorizzazione necessaria per eseguire l'attività nel passaggio di processo. Agent enforces subsystem restrictions even when the security principal for the proxy would normally have permission to run the task in the job step. Ad esempio, un proxy per un utente membro del ruolo predefinito del server sysadmin non può eseguire un passaggio di processo SSISSSIS a meno che non abbia accesso al sottosistema di SSISSSIS , anche se l'utente può eseguire pacchetti SSISSSIS .For example, a proxy for a user that is a member of the sysadmin fixed server role cannot run an SSISSSIS job step unless the proxy has access to the SSISSSIS subsystem, even though the user can run SSISSSIS packages.

ProxyProxies

SQL ServerSQL Server Agent utilizza i proxy per la gestione dei contesti di sicurezza. Agent uses proxies to manage security contexts. È possibile utilizzare un proxy in più passaggi di processo.A proxy can be used in more than one job step. I membri del ruolo predefinito del server sysadmin sono autorizzati alla creazione di proxy.Members of the sysadmin fixed server role can create proxies.

Ogni proxy corrisponde a una credenziale di sicurezzaEach proxy corresponds to a security credential. e può essere associato a un set di sottosistemi e a un set di account di accesso.Each proxy can be associated with a set of subsystems and a set of logins. È possibile utilizzare il proxy solo per i passaggi di processo che utilizzano un sottosistema associato al proxy stesso.The proxy can be used only for job steps that use a subsystem associated with the proxy. Per creare un passaggio di processo che utilizza un proxy specifico, il proprietario del processo deve utilizzare un account di accesso associato a tale proxy oppure essere un membro di un ruolo con accesso senza limitazioni ai proxy.To create a job step that uses a specific proxy, the job owner must either use a login associated with that proxy or be a member of a role with unrestricted access to proxies. I membri del ruolo predefinito del server sysadmin hanno privilegi di accesso senza limitazioni ai proxy.Members of the sysadmin fixed server role have unrestricted access to proxies. I membri del ruolo SQLAgentUserRole, SQLAgentReaderRoleo SQLAgentOperatorRole possono utilizzare solo i proxy ai quali sono specificamente autorizzati ad accedere.Members of SQLAgentUserRole, SQLAgentReaderRole, or SQLAgentOperatorRole can only use proxies to which they have been granted specific access. È necessario concedere l'accesso a proxy specifici a ogni utente membro di uno di questi ruoli predefiniti del database di SQL ServerSQL Server Agent, in modo che possa creare passaggi di processo che utilizzano tali proxy.Each user that is a member of any of these SQL ServerSQL Server Agent fixed database roles must be granted access to specific proxies so that the user can create job steps that use those proxies.

Per configurare SQL ServerSQL Server Agent per automatizzare l'amministrazione di SQL ServerSQL Server procedere come descritto di seguito:Use the following steps to configure SQL ServerSQL Server Agent to automate SQL ServerSQL Server administration:

  1. Individuare le attività amministrative o gli eventi server che si verificano regolarmente e che possono essere gestiti a livello di programmazione.Establish which administrative tasks or server events occur regularly and whether these tasks or events can be administered programmatically. È possibile automatizzare un'attività se implica una sequenza prevedibile di passaggi e si verifica a un'ora specifica o in risposta a un evento specifico.A task is a good candidate for automation if it involves a predictable sequence of steps and occurs at a specific time or in response to a specific event.

  2. Definire un set di processi, pianificazioni, avvisi e operatori tramite SQL Server Management StudioSQL Server Management Studio, script Transact-SQLTransact-SQL o SQL ServerSQL Server Management Objects (SMO).Define a set of jobs, schedules, alerts, and operators by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL scripts, or SQL ServerSQL Server Management Objects (SMO). Per altre informazioni, vedere Crea processi.For more information, see Create Jobs.

  3. Eseguire i processi SQL ServerSQL Server Agent definiti.Run the SQL ServerSQL Server Agent jobs you have defined.

Nota

Per un'istanza predefinita di SQL ServerSQL Server, il nome del servizio SQL ServerSQL Server è SQLSERVERAGENT.For the default instance of SQL ServerSQL Server, the SQL ServerSQL Server service is named SQLSERVERAGENT. Nel caso di istanze denominate il nome del servizio SQL ServerSQL Server Agent è SQLAgent$instancename.For named instances, the SQL ServerSQL Server Agent service is named SQLAgent$instancename.

Se si eseguono più istanze di SQL ServerSQL Server, è possibile utilizzare l'amministrazione multiserver per automatizzare attività comuni a tutte le istanze.If you are running multiple instances of SQL ServerSQL Server, you can use multiserver administration to automate tasks common across all instances. Per altre informazioni, vedere Amministrazione automatizzata in un'organizzazione.For more information, see Automated Administration Across an Enterprise.

Per un'introduzione a SQL ServerSQL Server , utilizzare le attività riportate di seguito.Use the following tasks to get started with SQL ServerSQL Server Agent:

DescriptionDescription ArgomentoTopic
Viene descritto come configurare SQL Server Agent.Describes how to configure SQL Server Agent. Configurazione di SQL Server AgentConfigure SQL Server Agent
Viene descritto come avviare, arrestare e sospendere il servizio SQL Server Agent.Describes how to start, stop, and pause the SQL Server Agent service. Avvio, arresto o sospensione del servizio SQL Server AgentStart, Stop, or Pause the SQL Server Agent Service
Descrive le considerazioni di cui tener conto per specificare un account per il servizio SQL Server Agent.Describes considerations for specifying an account for the SQL Server Agent service. Selezionare un account per il servizio SQL Server AgentSelect an Account for the SQL Server Agent Service
Descrive come utilizzare il log degli errori di SQL Server Agent.Describes how to use the SQL Server Agent error log. Log degli errori di SQL Server AgentSQL Server Agent Error Log
Viene descritto come utilizzare gli oggetti prestazioni.Describes how to use performance objects. Utilizzo degli oggetti prestazioniUse Performance Objects
Viene descritta la Creazione guidata piano di manutenzione, un'utilità che è possibile utilizzare per creare processi, avvisi e operatori allo scopo di automatizzare l'amministrazione di un'istanza di SQL Server.Describes the Maintenance Plan Wizard, which is a utility that you can use to help create jobs, alerts, and operators to automate administration of an instance of SQL Server. Utilizzare la Creazione guidata piano di manutenzioneUse the Maintenance Plan Wizard
Viene descritto come utilizzare SQL Server Agent per automatizzare le attività amministrative.Describes how to automate administrative tasks using SQL Server Agent. Automatizzazione delle attività amministrative (SQL Server Agent)Automated Administration Tasks (SQL Server Agent)

Vedere ancheSee Also

Configurazione superficie di attaccoSurface Area Configuration