Gestire le partizioni di una pubblicazione di tipo merge con filtri con parametri

Si applica a:SQL Server

Questo argomento descrive come gestire le partizioni per una pubblicazione di tipo merge con i filtri con parametri in SQL Server tramite SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO). È possibile utilizzare i filtri di riga con parametri per generare partizioni non sovrapposte. È possibile limitare tali partizioni in modo che solo una sottoscrizione riceva una determinata partizione. In questi casi, la presenza di un numero elevato di Sottoscrittori comporta un numero elevato di partizioni, che richiedono anche un numero uguale di snapshot partizionati. Per altre informazioni sui filtri di riga con parametri, vedere Filtri di riga con parametri.

Contenuto dell'articolo

Prima di iniziare

Consigli

  • Se si crea, come consigliato, uno script per la topologia di replica, gli script di pubblicazione contengono le chiamate di stored procedure necessarie per creare le partizioni di dati. Lo script offre un riferimento per le partizioni create e un modo per ricreare, se necessario, una o più partizioni. Per altre informazioni, vedere Scripting Replication.

  • Se una pubblicazione contiene filtri con parametri che producono sottoscrizioni con partizioni non sovrapposte ed è necessario ricreare un'eventuale sottoscrizione persa, rimuovere la partizione sottoscritta, ricreare la sottoscrizione, quindi ricreare la partizione. Per altre informazioni sui filtri di riga con parametri, vedere Filtri di riga con parametri. La replica genera script di creazione per le partizioni del Sottoscrittore esistenti al momento della generazione di uno script per la creazione della pubblicazione. Per altre informazioni, vedere Scripting Replication.

Utilizzo di SQL Server Management Studio

Gestire le partizioni nella pagina Partizioni dati della finestra di dialogo Proprietà pubblicazione - <Pubblicazione>. Per ulteriori informazioni sull'accesso a questa finestra di dialogo, vedere View and Modify Publication Properties. In questa pagina è possibile creare ed eliminare partizioni, consentire ai Sottoscrittori di avviare la generazione e il recapito di snapshot, generare snapshot per una o più partizioni ed eliminare snapshot.

Per creare una partizione

  1. Nella pagina Partizioni dati della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su Aggiungi.

  2. Nella finestra di dialogo Aggiungi partizione dati immettere un valore per HOST_NAME() e/o un valore SUSER_SNAME() associato alla partizione che si desidera creare.

  3. Facoltativamente, specificare una pianificazione per l'aggiornamento degli snapshot:

    1. Selezionare Usa la pianificazione seguente per l'esecuzione dell'agente snapshot per questa partizione.

    2. Accettare la pianificazione predefinita per l'aggiornamento degli snapshot oppure fare clic su Cambia per specificare una pianificazione diversa.

  4. Seleziona OK.

Per eliminare una partizione

  1. Nella pagina Partizioni dati selezionare una partizione della griglia.

  2. Fai clic su Elimina.

Per consentire ai Sottoscrittori di avviare la generazione e il recapito di snapshot

  1. Nella pagina Partizioni dati selezionare Definisci automaticamente una partizione e genera uno snapshot, se necessario, quando un nuovo Sottoscrittore cerca di eseguire la sincronizzazione.

  2. Seleziona OK.

Per generare lo snapshot di una partizione

  1. Nella pagina Partizioni dati selezionare una partizione della griglia.

  2. Fare clic su Genera gli snapshot selezionati adesso.

Per eliminare lo snapshot di una partizione

  1. Nella pagina Partizioni dati selezionare una partizione della griglia.

  2. Fare clic su Elimina gli snapshot esistenti.

Utilizzo di Transact-SQL

Per migliorare la gestione di una pubblicazione con filtri con parametri, è possibile enumerare le partizioni esistenti a livello di programmazione, utilizzando stored procedure di replica. È inoltre possibile creare ed eliminare le partizioni esistenti. È possibile ottenere le informazioni seguenti sulle partizioni esistenti:

Mentre la seconda parte dello snapshot a due parti può essere generata su richiesta quando viene inizializzata una nuova sottoscrizione, le procedure descritte di seguito consentono di controllare il modo in cui tale snapshot viene generato e di effettuare la pregenerazione dello snapshot nel momento più appropriato. Per altre informazioni, vedere Snapshots for Merge Publications with Parameterized Filters.

Per visualizzare informazioni sulle partizioni esistenti

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_helpmergepartition (Transact-SQL). Specificare il nome della pubblicazione per @publication. (Facoltativo) Specificare @suser_sname o @host_name per ottenere esclusivamente informazioni basate su un solo criterio di filtro.

Per definire una nuova partizione e generare un nuovo snapshot partizionato

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepartition (Transact-SQL). Specificare il nome della pubblicazione per @publication e il valore con parametri che definisce la partizione per uno degli elementi seguenti:

  2. Creare e inizializzare lo snapshot con parametri per la nuova partizione. Per altre informazioni, vedere Creazione di uno snapshot per una pubblicazione di tipo merge con filtri con parametri.

Per eliminare una partizione

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_dropmergepartition (Transact-SQL). Specificare il nome della pubblicazione per @publication e il valore con parametri che definisce la partizione per uno degli elementi seguenti:

    Viene inoltre effettuata la rimozione del processo di snapshot e degli eventuali file di snapshot per la partizione.

Utilizzo di RMO (Replication Management Objects)

Per migliorare la gestione di una pubblicazione con filtri con parametri, è possibile creare nuove partizioni del Sottoscrittore a livello di programmazione, enumerare le partizioni del Sottoscrittore esistenti ed eliminare quelle desiderate utilizzando oggetti RMO (Replication Management Objects). Per informazioni sulla creazione di partizioni del Sottoscrittore, vedere Creazione di uno snapshot per una pubblicazione di tipo merge con filtri con parametri. È possibile ottenere le informazioni seguenti sulle partizioni esistenti:

  • Valore e funzione di filtro su cui si basa la partizione.

  • Nome del processo che genera uno snapshot con parametri per il Sottoscrittore.

  • Ora dell'ultima esecuzione di un processo di snapshot con parametri.

Per visualizzare informazioni sulle partizioni esistenti

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe MergePublication. Impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sull'oggetto ServerConnection creato nel passaggio 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.

  4. Chiamare il metodo EnumMergePartitions e passare il risultato a una matrice di oggetti MergePartition .

  5. Per ogni oggetto MergePartition nella matrice, ottenere le proprietà desiderate.

Per eliminare partizioni esistenti

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe MergePublication. Impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sull'oggetto ServerConnection creato nel passaggio 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.

  4. Chiamare il metodo EnumMergePartitions e passare il risultato a una matrice di oggetti MergePartition .

  5. Per ogni oggetto MergePartition nella matrice, determinare se la partizione deve essere eliminata. Questa decisione si basa in genere sul valore della proprietà DynamicFilterLogin o DynamicFilterHostName .

  6. Chiamare il metodo RemoveMergePartition sull'oggetto MergePublication indicato nel passaggio 2. Passare l'oggetto MergePartition indicato nel passaggio 5.

  7. Ripetere il passaggio 6 per ogni partizione eliminata.

Vedi anche

Filtri di riga con parametri
Snapshot per pubblicazioni di tipo merge con filtri con parametri