Condividi tramite


sp_mergecleanupmetadata (Transact-SQL)

È consigliabile utilizzare la stored procedure sp_mergecleanupmetadata solo nelle topologie di replica che includono server che eseguono versioni di Microsoft SQL Server precedenti a SQL Server 2000 Service Pack 1. Questa stored procedure consente agli amministratori di eseguire la rimozione di metadati nelle tabelle di sistema MSmerge_genhistory, MSmerge_contents e MSmerge_tombstone. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
    [ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]

Argomenti

  • [ @publication = ] 'publication'
    Nome della pubblicazione. publication è di tipo sysname e il valore predefinito è %, con cui viene eseguita la rimozione dei metadati per tutte le pubblicazioni. Se viene specificata in modo esplicito, la pubblicazione deve essere esistente.

  • [ @reinitialize_subscriber = ] 'subscriber'
    Specifica se reinizializzare il Sottoscrittore. subscriber è di tipo nvarchar(5) e il valore predefinito è TRUE. I possibili valori sono TRUE o FALSE. Se impostato su TRUE, le sottoscrizioni vengono contrassegnate per la reinizializzazione. Se impostato su FALSE, le sottoscrizioni non vengono contrassegnate per la reinizializzazione.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

È consigliabile utilizzare la stored procedure sp_mergecleanupmetadata solo nelle topologie di replica che includono server che eseguono versioni di SQL Server precedenti a SQL Server 2000 Service Pack 1. Le topologie che includono solo SQL Server 2000 Service Pack 1 o versioni successive devono utilizzare la rimozione dei metadati basata sulla memorizzazione automatica. Per ulteriori informazioni sulla rimozione di metadati, vedere Funzionamento della replica di tipo merge. Quando si esegue questa stored procedure, è importante tenere presente che le dimensioni del file di log nel computer di esecuzione sono destinate ad aumentare, a volte in modo consistente.

Nota di attenzioneAttenzione

Dopo l'esecuzione della stored procedure sp_mergecleanupmetadata, per impostazione predefinita tutte le sottoscrizioni nei Sottoscrittori delle pubblicazioni che includono metadati archiviati nelle tabelle MSmerge_genhistory, MSmerge_contents e MSmerge_tombstone sono contrassegnate per la reinizializzazione, mentre le modifiche in sospeso nel Sottoscrittore andranno perdute e lo snapshot corrente viene contrassegnato come obsoleto.

Nota

Se un database include più pubblicazioni e per alcune di esse è stato impostato un periodo di memorizzazione indeterminato (@retention=0), l'esecuzione di sp_mergecleanupmetadata non comporta la rimozione dei metadati per il rilevamento delle modifiche per la replica di tipo merge nel database. È pertanto opportuno utilizzare il periodo di memorizzazione infinito con cautela.

Durante l'esecuzione di questa stored procedure è possibile scegliere se reinizializzare i Sottoscrittori impostando il parametro @reinitialize_subscriber su TRUE (impostazione predefinita) oppure FALSE. Se la stored procedure sp_mergecleanupmetadata viene eseguita con il parametro @reinitialize_subscriber impostato su TRUE, lo snapshot verrà riapplicato al Sottoscrittore anche se la sottoscrizione è stata creata senza l'applicazione di uno snapshot iniziale, ad esempio se i dati e lo schema di snapshot sono stati applicati manualmente o esistevano già nel Sottoscrittore. È consigliabile utilizzare l'impostazione del parametro su FALSE con cautela perché se la pubblicazione non viene reinizializzata è necessario assicurarsi che i dati nel server di pubblicazione e nel Sottoscrittore siano sincronizzati.

Indipendentemente dal valore del parametro @reinitialize_subscriber, l'esecuzione della stored procedure sp_mergecleanupmetadata ha esito negativo in presenza di processi di tipo merge che cercano di caricare le modifiche in un server di pubblicazione oppure in un Sottoscrittore di ripubblicazione al momento della chiamata alla stored procedure.

Esecuzione di sp_mergecleanupmetadata con @reinitialize_subscriber = TRUE

  1. È consigliabile, ma non richiesto, interrompere tutti gli aggiornamenti nei database di pubblicazione e sottoscrizione. Se l'esecuzione degli aggiornamenti continua, gli aggiornamenti effettuati in un Sottoscrizione dall'ultimo processo di tipo merge andranno perduti quando la pubblicazione viene reinizializzata. Viene tuttavia conservata la convergenza dei dati.

  2. Eseguire un'operazione di merge tramite l'agente di merge. Quando si esegue l'agente di merge, è consigliabile utilizzare l'opzione della riga di comando –Validate dell'agente in ogni Sottoscrittore. In caso di esecuzione di operazioni di merge in modalità continua, vedere Considerazioni speciali per le operazioni di merge in modalità continua di seguito in questo argomento.

  3. Quando tutte le operazioni di merge sono completate, eseguire sp_mergecleanupmetadata.

  4. Eseguire sp_reinitmergepullsubscription in tutti i Sottoscrittori utilizzando una sottoscrizione denominata o una sottoscrizione pull anonima per garantire la convergenza dei dati.

  5. In caso di esecuzione di operazioni di merge in modalità continua, vedere Considerazioni speciali per le operazioni di merge in modalità continua di seguito in questo argomento.

  6. Rigenerare i file di snapshot per tutte le pubblicazioni di tipo merge a tutti i livelli. Se si tenta di eseguire il merge senza rigenerare prima lo snapshot, viene richiesto di rigenerare lo snapshot.

  7. Eseguire il backup del database di pubblicazione. Se non si esegue questa operazione, dopo il ripristino del database di pubblicazione si verifica un errore del processo di merge.

Esecuzione di sp_mergecleanupmetadata con @reinitialize_subscriber = FALSE

  1. Interrompere tutti gli aggiornamenti ai database di pubblicazione e di sottoscrizione.

  2. Eseguire un'operazione di merge tramite l'agente di merge. Quando si esegue l'agente di merge, è consigliabile utilizzare l'opzione della riga di comando –Validate dell'agente in ogni Sottoscrittore. In caso di esecuzione di operazioni di merge in modalità continua, vedere Considerazioni speciali per le operazioni di merge in modalità continua di seguito in questo argomento.

  3. Quando tutte le operazioni di merge sono completate, eseguire sp_mergecleanupmetadata.

  4. In caso di esecuzione di operazioni di merge in modalità continua, vedere Considerazioni speciali per le operazioni di merge in modalità continua di seguito in questo argomento.

  5. Rigenerare i file di snapshot per tutte le pubblicazioni di tipo merge a tutti i livelli. Se si tenta di eseguire il merge senza rigenerare prima lo snapshot, viene richiesto di rigenerare lo snapshot.

  6. Eseguire il backup del database di pubblicazione. Se non si esegue questa operazione, dopo il ripristino del database di pubblicazione si verifica un errore del processo di merge.

Considerazioni speciali per le operazioni di merge in modalità continua

In caso di esecuzione di operazioni di merge in modalità continua, è necessario eseguire una delle operazioni seguenti:

  • Interrompere l'agente di merge e quindi eseguire un'altra operazione di merge senza specificare il parametro -Continuous.

  • Disattivare la pubblicazione tramite la stored procedure sp_changemergepublication per assicurarsi che tutte le operazioni di merge in modalità continua che stanno eseguendo il polling dello stato della pubblicazione abbiano esito negativo.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
    

Dopo aver completato il passaggio 3 dell'esecuzione della stored procedure sp_mergecleanupmetadata, riprendere l'esecuzione delle operazioni di merge in modalità continua dal punto in cui è stata interrotta. Eseguire una delle operazioni seguenti:

  • Aggiungere il parametro –Continuous nell'agente di merge.

  • Riattivare la pubblicazione tramite la stored procedure sp_changemergepublication.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
    

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_mergecleanupmetadata.

Per utilizzare questa stored procedure, il server di pubblicazione deve eseguire SQL Server 2000. I Sottoscrittori devono eseguire SQL Server 2000 o Microsoft SQL Server 7.0, Service Pack 2.