Condividi tramite


Convalida delle informazioni sulle partizioni per un Sottoscrittore di tipo merge

Quando si definisce un filtro di riga con parametri per una pubblicazione di tipo merge, si utilizza una funzione che fa riferimento a informazioni sul Sottoscrittore, ad esempio il nome di accesso del Sottoscrittore. Per impostazione predefinita, le informazioni sul Sottoscrittore vengono convalidate dalla replica in base a tale funzione prima di ogni sincronizzazione e ogni volta che uno snapshot viene applicato al Sottoscrittore. Il processo di convalida garantisce il partizionamento corretto dei dati per ogni Sottoscrittore. Il comportamento di convalida è controllato dalla proprietà di pubblicazione validate_subscriber_info, che può essere modificata mediante sp_changemergepublication (Transact-SQL) oppure nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione. Per ulteriori informazioni sulla modifica delle proprietà di pubblicazione, vedere Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni (programmazione Transact-SQL della replica) e Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni e degli articoli (SQL Server Management Studio).

Funzionamento della convalida delle partizioni

Quando una pubblicazione viene filtrata, ad esempio mediante la funzione SUSER_SNAME(), l'agente di merge applica lo snapshot iniziale a ogni Sottoscrittore in base ai dati validi per l'espressione SUSER_SNAME().

Se la convalida è attivata, quando il Sottoscrittore si riconnette al server di pubblicazione per la successiva sincronizzazione, l'agente di merge convalida le informazioni nel Sottoscrittore e garantisce che la partizione di ogni Sottoscrittore corrisponda a quella ricevuta nello snapshot iniziale. Per ogni successiva applicazione di snapshot o merge, l'agente di merge convalida la partizione di ogni Sottoscrittore.

Se l'agente di merge rileva che la funzione utilizzata nell'espressione di filtro restituisce un valore diverso rispetto allo snapshot iniziale, l'applicazione di snapshot o merge ha esito negativo e potrebbe essere necessaria la reinizializzazione della sottoscrizione del Sottoscrittore. La reinizializzazione può risultare necessaria per evitare i problemi che possono verificarsi in caso di modifica delle impostazioni di merge di un Sottoscrittore. Può tuttavia rivelarsi sufficiente modificare le informazioni nel Sottoscrittore, ad esempio il nome di accesso, ripristinando il valore utilizzato al momento dello snapshot originale.

Quando l'agente di merge convalida una partizione, oltre a convalidare la partizione rispetto ai valori restituiti dalle funzioni utilizzate nelle espressioni di filtro, controlla se lo snapshot è stato generato prima di modifiche che ne compromettono la validità, come operazioni di rimozione dei metadati o modifiche dello schema. Se uno snapshot partizionato è obsoleto, l'agente di merge restituirà un errore e sarà necessario rigenerare uno snapshot partizionato per il Sottoscrittore in base a uno snapshot regolare corrente.