Questo monitoraggio controlla lo stato del servizio agente di distribuzione della replica per la sottoscrizione. Si noti che il servizio di Windows SQL Server Agent non è supportato da alcuna edizione di SQL Server Express. Questo monitoraggio non è quindi applicabile ai casi relativi a SQL Server Express.
L'agente di distribuzione della replica è un eseguibile usato nella replica transazionale e snapshot. L'agente sposta gli snapshot e le transazioni contenute nelle tabelle del database di distribuzione nelle tabelle di destinazione nei Sottoscrittori. Si noti che il servizio di Windows SQL Server Agent non è supportato da alcuna edizione di SQL Server Express. Questo monitoraggio non è quindi applicabile ai casi relativi a SQL Server Express.
L'agente di distribuzione è in esecuzione con un account che non dispone di autorizzazioni sufficienti.
Timeout della query.
Si sono verificate violazioni della chiave primaria o errori di "riga non trovata" nel Sottoscrittore.
L'agente non riesce a stabilire una connessione con il database di distribuzione o il database sottoscrittore.
Esaurimento della memoria per l'heap del desktop non interattivo. http://support.microsoft.com/kb/949296
L'agente di distribuzione non è riuscito a creare i file temporanei nella directory 'C:\Programmi\Microsoft SQL Server\100\COM' (applicabile per SQL 2008 e SQL 2008 R2) http://support.microsoft.com/kb/956032
L'agente di distribuzione non riesce a visualizzare i file di snapshot
L'agente di distribuzione non ha i privilegi necessari.
Parametri non corretti passati al comando dell'agente di distribuzione.
Il processo non è riuscito a eseguire la copia bulk nella tabella
Assicurarsi che l'agente di distribuzione sia in esecuzione con un account che dispone delle autorizzazioni necessarie. Per identificare le autorizzazioni necessarie, vedere questo articolo.
Se nella topologia di replica sono coinvolti più server, le istanze di SQL Server Agent devono essere eseguite in un account di dominio.
L'account dell'agente di distribuzione deve essere membro del ruolo predefinito [db_owner] nei database di distribuzione e sottoscrittore.
Timeout della query.
Controllare eventuali blocchi nel server di distribuzione e nel Sottoscrittore e verificare se l'agente di distribuzione è bloccato. Risolvere il problema relativo al blocco ed eseguire di nuovo l'agente.
Impostare il timeout di query dell'agente di distribuzione su un valore più elevato o usare 0 (attesa infinita)
Si è verificata una violazione della chiave primaria o errori di "riga non trovata" nel Sottoscrittore.
Verificare tutte le proprietà dell'articolo per confermare che tutti i comandi di inserimento, aggiornamento ed eliminazione vengano replicati.
Assicurarsi che gli utenti non dispongano di accesso in scrittura al database sottoscrittore.
Usare il parametro -skiperrors dell'agente di distribuzione per ignorare questi errori (usare questa soluzione come correzione temporanea e risolvere il problema sottostante)
Non è possibile stabilire una connessione con il database di distribuzione o il database sottoscrittore.
Assicurarsi che l'account dell'agente di distribuzione sia un membro del ruolo predefinito [db_owner] nei database di distribuzione e sottoscrittore. Verificare che sia possibile stabilire una connessione da SQL Server Management Studio a entrambi i database sottoscrittore e di distribuzione.
Nel server di distribuzione e nel server di pubblicazione abilitare le porte TCP e UDP usate da SQL Server nel firewall (per impostazione predefinita, viene usata la porta 1433).
Esaurimento della memoria per l'heap del desktop non interattivo.
Per risolvere il problema, usare una delle soluzioni alternative descritte nell'articolo KB della Microsoft Knowledge Base.
L'agente di distribuzione non è riuscito a creare i file temporanei nella directory 'C:\Programmi\Microsoft SQL Server\100\COM' (applicabile per SQL 2008 e SQL 2008 R2). Per risolvere il problema, vedere KB.
L'agente di distribuzione non riesce a visualizzare i file di snapshot. Usare i percorsi UNC per archiviare la cartella di snapshot. Condividere la cartella e concedere le autorizzazioni di lettura all'account dell'agente di distribuzione.
Il client non ha i privilegi necessari. Seguire la procedura illustrata in http://msdn.microsoft.com/library/ms143504.aspx e assicurarsi che il SID del servizio SQL Agent abbia i diritti seguenti:
Accesso come servizio (SeServiceLogonRight)
Sostituzione di token a livello di processo (SeAssignPrimaryTokenPrivilege)
Ignorare controllo incrociato (SeChangeNotifyPrivilege)
Regolazione limite risorse memoria per un processo (SeIncreaseQuotaPrivilege)
Sono stati passati parametri non corretti al comando dell'agente di distribuzione. Verificare i parametri passati alla riga di comando dell'agente di distribuzione.
Ridurre il valore passato al parametro –BCPBatchSize nel processo dell'agente di distribuzione
Eseguire di nuovo l'agente di distribuzione e aggiungere il parametro -OutputVerboseLevel 2. Nell'output verranno quindi visualizzate informazioni dettagliate sull'istruzione che contiene errori.
Inizializzare un sottoscrittore usando un backup.
http://technet.microsoft.com/library/ms151868.aspx
Nome | Descrizione | Valore predefinito |
Priorità avviso | Definisce la priorità dell'avviso. | Normale |
Gravità avviso | Definisce la gravità dell'avviso. | Errore |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Durata stimata del processo | Soglia usata per controllare la conformità con la pianificazione processo | 15 |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 300 |
Mostra i processi con stato sconosciuto | Include i processi con stato sconosciuto nell'output del monitoraggio e nel contesto dell'avviso. Ha effetto sull'integrità. | No |
Ora di sincronizzazione | Ora di sincronizzazione |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 300 |
Timeout per la connessione di database (secondi) | Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato. | 15 |
Target | Microsoft.SQLServer.2012.Replication.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionDistributionAgentState" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionDistributionAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$</ConnectionString>
<XPathName>Distribution$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/ConnectionString$$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>