Utilizzare gli avvisi per gli eventi degli agenti di replicaUse Alerts for Replication Agent Events

SQL Server Management StudioSQL Server Management Studio e MicrosoftMicrosoft SQL ServerSQL Server Agent consentono di monitorare gli eventi, ad esempio quelli dell'agente di replica, mediante gli avvisi. and MicrosoftMicrosoft SQL ServerSQL Server Agent provide a way to monitor events, such as replication agent events, using alerts. Utilizzando SQL ServerSQL Server Agent è possibile monitorare il registro applicazioni di Windows per rilevare gli eventi associati ad avvisi. SQL ServerSQL Server Agent monitors the Windows application log for events that are associated with alerts. Se si verifica un evento di questo tipo, SQL ServerSQL Server Agent risponde automaticamente eseguendo un'attività definita dall'utente e/o inviando un messaggio di posta elettronica o tramite cercapersone a un operatore specificato.If such an event occurs, SQL ServerSQL Server Agent responds automatically, by executing a task that you have defined and/or sending e-mail or a pager message to a specified operator. SQL ServerSQL Server include un set di avvisi predefiniti per gli agenti di replica che è possibile configurare per l'esecuzione di un'attività e/o la notifica di un operatore. includes a set of predefined alerts for replication agents that you can configure to execute a task and/or notify an operator. Per ulteriori informazioni sulla definizione di un'attività da eseguire, vedere la sezione "Risposte automatiche a un avviso" in questo argomento.For more information about defining a task to execute, see the section "Automating a Response to an Alert" in this topic.

Quando un computer viene configurato come server di distribuzione, vengono installati gli avvisi seguenti:The following alerts are installed when a computer is configured as a Distributor:

ID del messaggioMessage ID Avviso predefinitoPredefined alert Condizione che genera l'avvisoCondition causing the alert to fire Inserimento di informazioni aggiuntive in msdb..sysreplicationalertsEnters additional information in msdb..sysreplicationalerts
1415014150 Replica: operazione dell'agente riuscitaReplication: agent success La chiusura dell'agente è stata completata correttamente.Agent shuts down successfully. Yes
1415114151 Replica: errore dell'agenteReplication: agent failure Si è verificato un errore durante la chiusura dell'agente.Agent shuts down with an error. Yes
1415214152 Replica: nuovo tentativo dell'agenteReplication: agent retry La chiusura dell'agente avviene in seguito al tentativo non riuscito di ripetere un'operazione. In questo caso, l'agente rileva un errore quale la non disponibilità del server, un deadlock, un errore di connessione o un errore di timeout.Agent shuts down after unsuccessfully retrying an operation (agent encounters an error such as server not available, deadlock, connection failure, or time-out failure). Yes
1415714157 Replica: eliminata sottoscrizione scadutaReplication: expired subscription dropped La sottoscrizione scaduta è stata eliminata.Expired subscription was dropped. NoNo
2057220572 Replica: la sottoscrizione è stata reinizializzata dopo l'errore di convalidaReplication: Subscription reinitialized after validation failure Il processo di risposta "Reinizializzazione delle sottoscrizioni con errori di convalida dei dati" reinizializza una sottoscrizione correttamente.Response job 'Reinitialize subscriptions on data validation failure' reinitializes a subscription successfully. NoNo
2057420574 Replica: la convalida dei dati nel Sottoscrittore non è riuscitaReplication: Subscriber has failed data validation La convalida dei dati dell'agente di distribuzione o di merge non è riuscita.Distribution or Merge Agent fails data validation. Yes
2057520575 Replica: la convalida dei dati nel Sottoscrittore è riuscitaReplication: Subscriber has passed data validation La convalida dei dati dell'agente di distribuzione o di merge ha avuto esito positivo.Distribution or Merge Agent passes data validation. Yes
2057820578 Replica: arresto dell'agente personalizzatoReplication: agent custom shutdown
2281522815 Avviso di rilevamento dei conflitti peer-to-peerPeer-to-peer conflict detection alert L'agente di distribuzione ha rilevato un conflitto durante il tentativo di applicare una modifica a un nodo peer-to-peer.Distribution Agent detected a conflict when it tries to apply a change at a peer-to-peer node. Yes

In aggiunta a questi avvisi, in Monitoraggio replica è disponibile un set di avvisi relativi allo stato e alle prestazioni.In addition to these alerts, Replication Monitor provides a set of warnings and alerts related to status and performance. Per altre informazioni, vedere Set Thresholds and Warnings in Replication Monitor.For more information, see Set Thresholds and Warnings in Replication Monitor. È inoltre possibile definire avvisi per altri eventi di replica utilizzando l'infrastruttura degli avvisi di SQL ServerSQL Server .You can also define alerts for other replication events using the SQL ServerSQL Server alerts infrastructure. Per altre informazioni, vedere Creare un evento definito dall'utente.For more information, see Create a User-Defined Event.

Per configurare gli avvisi predefiniti della replicaTo configure predefined replication alerts

Visualizzazione diretta del registro applicazioniViewing the Application Log Directly

Per visualizzare il registro applicazioni di Windows, utilizzare il Visualizzatore eventi di MicrosoftMicrosoft Windows.To view the Windows application log, use the MicrosoftMicrosoft Windows Event Viewer. Il registro applicazioni contiene messaggi di errore di SQL ServerSQL Server nonché messaggi per molte altre attività eseguite nel computer.The application log contains SQL ServerSQL Server error messages as well as messages for many other activities on the computer. Diversamente dal log degli errori di SQL ServerSQL Server , a ogni avvio di SQL ServerSQL Server non viene creato un nuovo registro applicazioni (durante ogni sessione SQL ServerSQL Server vengono scritti nuovi eventi in un registro applicazioni esistente). È tuttavia possibile specificare il periodo di memorizzazione degli eventi registrati.Unlike the SQL ServerSQL Server error log, a new application log is not created each time you start SQL ServerSQL Server (each SQL ServerSQL Server session writes new events to an existing application log); however, you can specify how long logged events will be retained. Quando si visualizza il registro applicazioni di Windows, è possibile filtrarlo per eventi specifici.When you view the Windows application log, you can filter the log for specific events. Per ulteriori informazioni, vedere la documentazione di Windows.For more information, see the Windows documentation.

Risposte automatiche a un avvisoAutomating a Response to an Alert

La replica include un processo di risposta per le sottoscrizioni con errore di convalida dei dati nonché una struttura per la creazione di ulteriori risposte automatiche agli avvisi.Replication provides a response job for subscriptions that fail data validation, and also provides a framework for creating additional automated responses to alerts. Il processo di risposta si chiama Reinizializzazione delle sottoscrizioni con errori di convalida dei dati ed è memorizzato nella cartella SQL ServerSQL Server Processi di Agent in SQL Server Management StudioSQL Server Management Studio.The response job is titled Reinitialize subscriptions on data validation failure and is stored in the SQL ServerSQL Server Agent Jobs folder in SQL Server Management StudioSQL Server Management Studio. Per altre informazioni sull'abilitazione di questo processo di risposta, vedere Configurare gli avvisi di replica predefiniti (SQL Server Management Studio).For information about enabling this response job, see Configure Predefined Replication Alerts (SQL Server Management Studio). Se la convalida degli articoli di una pubblicazione transazionale non riesce, il processo di risposta reinizializza solo gli articoli con errore.If articles in a transactional publication fail validation, the response job reinitializes only those articles that failed. Se la convalida degli articoli di una pubblicazione di tipo merge non riesce, il processo di risposta reinizializza tutti gli articoli della pubblicazione.If articles in a merge publication fail validation, the response job reinitializes all articles in the publication.

Struttura per le risposte automaticheFramework for Automating Responses

Quando viene generato un avviso, le informazioni necessarie per comprenderne le causa e determinare l'intervento appropriato in genere sono contenute nel messaggio di avviso stesso.Usually, when an alert occurs, the only information you have to help you understand what caused the alert and the appropriate action to take is contained in the alert message itself. L'analisi di queste informazioni può essere soggetta a errori e richiedere tempi lunghi.Parsing this information can be error-prone and time-consuming. La replica semplifica l'automatizzazione delle risposte grazie alla specifica di informazioni aggiuntive sull'avviso nella tabella di sistema sysreplicationalerts . Le informazioni fornite sono già analizzate in un formato facilmente utilizzabile in programmi personalizzati.Replication makes automating responses easier by providing additional information about the alert in the sysreplicationalerts system table; the information provided is already parsed in a form easily used by customized programs.

Se, ad esempio, i dati della tabella Sales.SalesOrderHeader nel Sottoscrittore A non vengono convalidati, in SQL ServerSQL Server viene attivato il messaggio di avviso 20574 per avvisare l'utente dell'errore.For example, if the data in the Sales.SalesOrderHeader table at Subscriber A fails validation, SQL ServerSQL Server can trigger message 20574, notifying you of that failure. Il messaggio visualizzato sarà il seguente: "La sottoscrizione del Sottoscrittore 'A' dell'articolo 'SalesOrderHeader' della pubblicazione 'MyPublication' non ha superato la convalida dei dati".The message you receive will be: "Subscriber 'A', subscription to article 'SalesOrderHeader' in publication 'MyPublication' failed data validation."

Se si crea una risposta in base al messaggio, è necessario analizzare in modo manuale il nome del Sottoscrittore, il nome dell'articolo, il nome della pubblicazione e l'errore indicato nel messaggio.If you create a response based on the message, you must manually parse the Subscriber name, article name, publication name, and error from the message. Poiché, tuttavia, l'agente di distribuzione e l'agente di merge scrivono le stesse informazioni nella tabella di sistema sysreplicationalerts , il processo di risposta può ricavare le informazioni appropriate direttamente dalla tabella, insieme a dettagli quali il tipo di agente, l'ora di attivazione dell'avviso, il database di pubblicazione, il database del Sottoscrittore e il tipo di pubblicazione.However, because the Distribution Agent and Merge Agent write that same information to sysreplicationalerts (along with details such as the type of agent, time of the alert, publication database, Subscriber database, and type of publication) the response job can directly query the relevant information from the table. Sebbene non sia possibile associare la riga esatta a un'istanza specifica dell'avviso, la tabella include una colonna status che consente di tenere traccia delle voci elaborate.Although the exact row cannot be associated with a specific instance of the alert, the table has a status column, which can be used to keep track of serviced entries. Le voci di questa tabella sono disponibili per l'intero periodo di memorizzazione della cronologia.The entries in this table are maintained for the history retention period.

Se, ad esempio, si desidera creare un processo di risposta in Transact-SQLTransact-SQL che elabori il messaggio di avviso 20574, è possibile utilizzare la logica seguente:For example, if you were to create a response job in Transact-SQLTransact-SQL that services alert message 20574, you might use the following logic:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int  
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,   
  subscriber_db, alert_id from   
  msdb..sysreplicationalerts where  
  alert_error_code = 20574 and status = 0  
  for read only  
open hc  
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
while (@@fetch_status <> -1)  
begin  
/* Do custom work  */  
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */  
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id  
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
end  
close hc  
deallocate hc  

Vedere ancheSee Also

Amministrazione dell'agente di replica Replication Agent Administration
Best Practices for Replication Administration Best Practices for Replication Administration
Monitoraggio (replica)Monitoring (Replication)