Gestione delle partizioni di una pubblicazione di tipo merge con filtri con parametri
In questo argomento viene descritto come gestire le partizioni per una pubblicazione di tipo merge con i filtri con parametri in SQL Server 2012 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 ulteriori informazioni, vedere Filtri di riga con parametri.
Contenuto dell'argomento
Prima di iniziare:
Indicazioni
Per gestire le partizioni di una pubblicazione di tipo merge con filtri con parametri, utilizzando:
SQL Server Management Studio
Transact-SQL
Oggetti RMO (Replication Management Objects)
Prima di iniziare
Indicazioni
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 ulteriori informazioni, vedere Creazione di script di replica.
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 ulteriori informazioni, 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 ulteriori informazioni, vedere Creazione di script di replica.
[Top]
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 Visualizzazione e modifica delle proprietà della pubblicazione. 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
Nella pagina Partizioni dati della finestra di dialogo Proprietà pubblicazione - <Pubblicazione>, fare clic su Aggiungi.
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.
Facoltativamente, specificare una pianificazione per l'aggiornamento degli snapshot:
Selezionare Usa la pianificazione seguente per l'esecuzione dell'agente snapshot per questa partizione.
Accettare la pianificazione predefinita per l'aggiornamento degli snapshot oppure fare clic su Cambia per specificare una pianificazione diversa.
Fare clic su OK.
Per eliminare una partizione
Nella pagina Partizioni dati selezionare una partizione della griglia.
Fare clic su Elimina.
Per consentire ai Sottoscrittori di avviare la generazione e il recapito di snapshot
Nella pagina Partizioni dati selezionare Definisci automaticamente una partizione e genera uno snapshot, se necessario, quando un nuovo Sottoscrittore cerca di eseguire la sincronizzazione.
Fare clic su OK.
Per generare lo snapshot di una partizione
Nella pagina Partizioni dati selezionare una partizione della griglia.
Fare clic su Genera gli snapshot selezionati adesso.
Per eliminare lo snapshot di una partizione
Nella pagina Partizioni dati selezionare una partizione della griglia.
Fare clic su Elimina gli snapshot esistenti.
[Top]
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:
Modalità in cui una partizione viene filtrata mediante SUSER_SNAME (Transact-SQL) o HOST_NAME (Transact-SQL).
Nome del processo che genera uno snapshot partizionato.
Ora dell'ultima esecuzione di un processo di snapshot partizionato.
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 ulteriori informazioni, vedere Snapshot per pubblicazioni di tipo merge con filtri con parametri.
Per visualizzare informazioni sulle partizioni esistenti
- 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
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 indicati di seguito.
@suser_sname: se il filtro con parametri è definito dal valore restituito da SUSER_SNAME (Transact-SQL).
@host_name: se il filtro con parametri è definito dal valore restituito da HOST_NAME (Transact-SQL).
Creare e inizializzare lo snapshot con parametri per la nuova partizione. Per ulteriori informazioni, vedere Creazione di uno snapshot per una pubblicazione di tipo merge con filtri con parametri.
Per eliminare una partizione
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 indicati di seguito.
@suser_sname: se il filtro con parametri è definito dal valore restituito da SUSER_SNAME (Transact-SQL).
@host_name: se il filtro con parametri è definito dal valore restituito da HOST_NAME (Transact-SQL).
Viene inoltre effettuata la rimozione del processo di snapshot e degli eventuali file di snapshot per la partizione.
[Top]
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
Creare una connessione al server di pubblicazione tramite la classe ServerConnection.
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.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
Chiamare il metodo EnumMergePartitions e passare il risultato a una matrice di oggetti MergePartition.
Per ogni oggetto MergePartition nella matrice, ottenere le proprietà desiderate.
Per eliminare partizioni esistenti
Creare una connessione al server di pubblicazione tramite la classe ServerConnection.
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.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
Chiamare il metodo EnumMergePartitions e passare il risultato a una matrice di oggetti MergePartition.
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.
Chiamare il metodo RemoveMergePartition sull'oggetto MergePublication indicato nel passaggio 2. Passare l'oggetto MergePartition indicato nel passaggio 5.
Ripetere il passaggio 6 per ogni partizione eliminata.
[Top]
Vedere anche
Concetti
Snapshot per pubblicazioni di tipo merge con filtri con parametri