Pubblicazione di dati e oggetti di database
Quando si crea una pubblicazione, è possibile scegliere le tabelle e gli altri oggetti di database che si desidera pubblicare. Tramite la replica è possibile pubblicare gli oggetti di database elencati di seguito.
Oggetto di database |
Replica snapshot e replica transazionale |
Replica di tipo merge |
---|---|---|
Tabelle |
X |
X |
Tabelle partizionate |
X |
X |
Stored procedure - definizione (Transact-SQL e CLR) |
X |
X |
Stored procedure - esecuzione (Transact-SQL e CLR) |
X |
No |
Viste |
X |
X |
Viste indicizzate |
X |
X |
Viste indicizzate come tabelle |
X |
No |
Tipi definiti dall'utente (CLR) |
X |
X |
Funzioni definite dall'utente (Transact-SQL e CLR). |
X |
X |
Tipi di dati alias |
X |
X |
Indici full-text |
X |
X |
Oggetti dello schema (vincoli, indici, trigger DML dell'utente, proprietà estese e regole di confronto) |
X |
X |
Creazione di pubblicazioni
Per creare una pubblicazione, si specificano le informazioni seguenti:
Server di distribuzione.
Percorso dei file di snapshot.
Database di pubblicazione.
Tipo di pubblicazione da creare (snapshot, transazionale, transazionale con sottoscrizioni aggiornabili o di tipo merge).
Dati e oggetti di database (articoli) da includere nella pubblicazione.
Filtri di colonna e filtri di riga statici per tutti i tipi di pubblicazioni, nonché filtri join e filtri di riga con parametri per le pubblicazioni di tipo merge.
Pianificazione dell'agente snapshot.
Account utilizzati per l'esecuzione degli agenti seguenti: agente snapshot per tutte le pubblicazioni, agente di lettura log per tutte le pubblicazioni transazionali e agente di lettura coda per tutte le pubblicazioni transazionali che consentono sottoscrizioni aggiornabili.
Nome e descrizione della pubblicazione.
Per creare pubblicazioni e definire articoli
Microsoft SQL Server Management Studio: Procedura: Creazione di una pubblicazione e definizione di articoli (SQL Server Management Studio)
Programmazione Transact-SQL per la replica: Procedura: Creazione di una pubblicazione (programmazione Transact-SQL della replica) e Procedura: Definizione di un articolo (programmazione Transact-SQL della replica)
Programmazione oggetti RMO (Replication Management Objects): Procedura: Creazione di una pubblicazione (programmazione RMO) e Procedura: Definizione di un articolo (programmazione RMO)
Per modificare pubblicazioni e articoli
SQL Server Management Studio: Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni e degli articoli (SQL Server Management Studio)
Programmazione Transact-SQL per la replica: Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni (programmazione Transact-SQL della replica) e Procedura: Visualizzazione e modifica delle proprietà degli articoli (programmazione Transact-SQL della replica)
Programmazione oggetti RMO (Replication Management Objects): Procedura: Visualizzazione e modifica delle proprietà della pubblicazione (programmazione RMO) e Procedura: Visualizzazione e modifica delle proprietà degli articoli (programmazione RMO)
Per eliminare pubblicazioni e articoli
SQL Server Management Studio: Procedura: Eliminazione di una pubblicazione (SQL Server Management Studio)
Programmazione Transact-SQL per la replica: Procedura: Eliminazione di una pubblicazione (programmazione Transact-SQL della replica) e Procedura: Eliminazione di un articolo (programmazione Transact-SQL della replica)
Programmazione oggetti RMO (Replication Management Objects): Procedura: Eliminazione di un articolo (programmazione RMO)
Nota
L'eliminazione di un articolo o una pubblicazione non determina la rimozione di oggetti dal Sottoscrittore.
Pubblicazione di tabelle
L'oggetto più comunemente pubblicato è costituito da una tabella. È possibile utilizzare i collegamenti seguenti per ottenere informazioni aggiuntive sulle aree correlate alla pubblicazione di tabelle:
Quando si pubblica una tabella per la replica, è possibile specificare gli oggetti dello schema da copiare nel Sottoscrittore, ad esempio l'integrità referenziale dichiarata (vincoli di chiave primaria, di riferimento o UNIQUE), indici, trigger DML dell'utente (i trigger DDL non possono essere replicati), proprietà estese e regole di confronto. Le proprietà estese vengono replicate solo nella sincronizzazione iniziale tra il server di pubblicazione e il Sottoscrittore. Se si aggiunge o si modifica una proprietà estesa dopo la sincronizzazione iniziale, la modifica non viene replicata.
Per specificare le opzioni dello schema
SQL Server Management Studio: Procedura: Impostazione delle opzioni dello schema (SQL Server Management Studio)
Programmazione Transact-SQL della replica: Procedura: Impostazione delle opzioni dello schema (programmazione Transact-SQL della replica)
Programmazione RMO: SchemaOption
Tabelle e indici partizionati
La replica supporta la pubblicazione di tabelle e indici partizionati. Il livello di supporto dipende dal tipo di replica utilizzato, nonché dalle opzioni specificate per la pubblicazione e dagli articoli associati alle tabelle partizionate. Per ulteriori informazioni, vedere Replica di tabelle e indici partizionati.
Pubblicazione di stored procedure
Tutti i tipi di replica consentono di replicare definizioni di stored procedure, copiando CREATE PROCEDURE in ogni Sottoscrittore. In caso di stored procedure CLR (Common Language Runtime), viene inoltre copiato l'assembly associato. Le modifiche apportate alle procedure vengono replicate nei Sottoscrittori, mentre non vengono replicate le modifiche agli assembly associati.
Oltre alla replica della definizione di una stored procedure, la replica transazionale consente di replicare l'esecuzione di stored procedure. Ciò risulta utile per la replica dei risultati di stored procedure orientate alla manutenzione che influiscono su ingenti quantità di dati. Per ulteriori informazioni, vedere Pubblicazione dell'esecuzione delle stored procedure nella replica transazionale.
Pubblicazione di viste
Tutti i tipi di replica consentono di replicare viste. È possibile copiare la vista e l'indice associato, in caso di vista indicizzata, nel Sottoscrittore, ma è inoltre necessario replicare la tabella di base.
Per le viste indicizzate, la replica transazionale consente inoltre di replicare la vista indicizzata come tabella anziché come vista, eliminando così l'esigenza di replicare anche la tabella di base. A tale scopo, specificare una delle opzioni "indexed view logbased" per il parametro @type di sp_addarticle (Transact-SQL). Per ulteriori informazioni sull'utilizzo di sp_addarticle, vedere Procedura: Definizione di un articolo (programmazione Transact-SQL della replica).
Pubblicazione di funzioni definite dall'utente
Le istruzioni CREATE FUNCTION per funzioni CLR e Transact-SQL vengono copiate in ogni Sottoscrittore. In caso di funzioni CLR, viene inoltre copiato l'assembly associato. Le modifiche apportate alle funzioni vengono replicate nei Sottoscrittori, mentre non vengono replicate le modifiche agli assembly associati.
Pubblicazione di tipi di dati definiti dall'utente e tipi di dati alias
Le colonne in cui vengono utilizzati tipi definiti dall'utente o tipi di dati alias vengono replicate nei Sottoscrittori come le altre colonne. L'istruzione CREATE TYPEper ogni tipo replicato viene eseguita nel Sottoscrittore prima della creazione della tabella. In caso di tipi definiti dall'utente, viene inoltre copiato l'assembly associato in ogni Sottoscrittore. Le modifiche apportate ai tipi definiti dall'utente e ai tipi di dati alias non vengono replicate nei Sottoscrittori.
Se a un tipo definito in un database non viene fatto riferimento in alcuna colonna al momento della creazione di una pubblicazione, il tipo non viene copiato nei Sottoscrittori. Se successivamente si crea una colonna di tale tipo nel database e si desidera eseguirne la replica, è innanzitutto necessario copiare manualmente il tipo, nonché l'assembly associato in caso di tipo definito dall'utente, in ogni Sottoscrittore.
Pubblicazione di indici full-text
L'istruzione CREATE FULLTEXT INDEX viene copiata in ogni Sottoscrittore e nel Sottoscrittore viene creato l'indice full-text. Le modifiche apportate agli indici full-text tramite ALTER FULLTEXT INDEX non vengono replicate.
Modifiche dello schema in oggetti pubblicati
La replica supporta una vasta gamma di modifiche dello schema negli oggetti pubblicati. Quando si apporta una delle modifiche dello schema seguenti nell'oggetto pubblicato appropriato nel server di pubblicazione SQL Server, tale modifica viene propagata per impostazione predefinita a tutti i Sottoscrittori SQL Server:
ALTER TABLE
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
ALTER TRIGGER
Per ulteriori informazioni, vedere Modifiche allo schema nei database di pubblicazione.
Considerazioni sulla pubblicazione
Durante la pubblicazione di oggetti di database è importante tenere presente quanto segue:
Il database è accessibile agli utenti durante la creazione della pubblicazione e dello snapshot iniziale, ma è consigliabile creare le pubblicazioni in periodi di attività ridotta del server di pubblicazione.
Non è possibile rinominare un database dopo che vi è stata creata una pubblicazione. Per rinominarlo, è innanzitutto necessario rimuovere la replica dal database. Per ulteriori informazioni, vedere Rimozione della replica.
Se si pubblica un oggetto di database che dipende da uno o più oggetti di database diversi, è necessario pubblicare tutti gli oggetti a cui si fa riferimento. Se ad esempio si pubblica una vista che dipende da una tabella, sarà necessario pubblicare anche la tabella.
Nota
Se in una pubblicazione di tipo merge si aggiunge un nuovo articolo dal quale dipende un articolo esistente, è necessario specificare l'ordine di elaborazione dei due articoli tramite il parametro @processing_order di sp_addmergearticle e sp_changemergearticle. Si consideri lo scenario seguente: viene pubblicata una tabella, ma non viene pubblicata una funzione a cui fa riferimento la tabella. Se non viene pubblicata la funzione, la tabella non può essere creata nel Sottoscrittore. Quando si aggiunge la funzione alla pubblicazione, specificare un valore 1 per il parametro @processing_order di sp_addmergearticle e un valore 2 per il parametro @processing_order di sp_changemergearticle, indicando il nome della tabella per il parametro @article. Questo ordine di elaborazione consente di creare la funzione nel Sottoscrittore prima della tabella dipendente. È possibile utilizzare numeri diversi per ogni articolo, a condizione che il numero della funzione sia inferiore al numero della tabella.
I nomi delle pubblicazioni non possono includere i caratteri seguenti: % * [ ] | : " ? \ / < >.
Limitazioni relative alla pubblicazione di oggetti
Il numero massimo di articoli e colonne che è possibile pubblicare varia in base al tipo di pubblicazione. Per ulteriori informazioni, vedere la sezione "Oggetti di replica" di Specifiche di capacità massima per SQL Server.
Le stored procedure, le viste, i trigger e le funzioni definite all'utente specificati come WITH ENCRYPTION non possono essere pubblicati nell'ambito della replica SQL Server.
È possibile replicare raccolte di schemi XML, ma le modifiche non vengono replicate dopo lo snapshot iniziale.
Le tabelle pubblicate per la replica transazionale devono disporre di una chiave primaria. Se una tabella è inclusa in una pubblicazione per la replica transazionale, non è possibile disattivare gli indici associati a colonne chiave primaria. Questi indici sono necessari per la replica. Per disattivare un indice, è innanzitutto necessario eliminare la tabella dalla pubblicazione.
I valori predefiniti associati creati con sp_bindefault (Transact-SQL) non vengono replicati. I valori predefiniti associati sono obsoleti e sono stati sostituiti dai valori predefiniti creati con la parola chiave DEFAULT di ALTER TABLE o CREATE TABLE.
Schemi e proprietà degli oggetti
Relativamente agli schemi e alla proprietà degli oggetti, la replica presenta nella Creazione guidata nuova pubblicazione il funzionamento predefinito seguente.
Per gli articoli di pubblicazioni di tipo merge con un livello di compatibilità pari a 90 o superiore, per le pubblicazioni snapshot e per le pubblicazioni transazionali: per impostazione predefinita, il proprietario dell'oggetto nel Sottoscrittore è lo stesso del proprietario dell'oggetto corrispondente nel server di pubblicazione. Se non esistono nel Sottoscrittore, gli schemi proprietari degli oggetti vengono creati automaticamente.
Per gli articoli di pubblicazioni di tipo merge con un livello di compatibilità inferiore a 90: per impostazione predefinita, il proprietario viene lasciato vuoto ed è specificato come dbo durante la creazione dell'oggetto nel Sottoscrittore.
Per articoli contenuti in pubblicazioni Oracle: per impostazione predefinita, il proprietario viene specificato come dbo.
Per gli articoli di pubblicazioni che utilizzano snapshot in modalità carattere (utilizzati per Sottoscrittori non SQL Server e Sottoscrittori SQL Server Compact 3.5 SP2: per impostazione predefinita, il proprietario viene lasciato vuoto. Il proprietario predefinito corrisponde al proprietario associato all'account utilizzato dall'agente di distribuzione o di merge per la connessione al Sottoscrittore.
Il proprietario dell'oggetto può essere modificato tramite la finestra di dialogo Proprietà articolo - <Articolo> e tramite le stored procedure sp_addarticle, sp_addmergearticle, sp_changearticle e sp_changemergearticle. Per ulteriori informazioni, vedere Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni e degli articoli (SQL Server Management Studio), Procedura: Definizione di un articolo (programmazione Transact-SQL della replica) e Procedura: Visualizzazione e modifica delle proprietà degli articoli (programmazione Transact-SQL della replica).
Pubblicazione di dati per Sottoscrittori che eseguono versioni precedenti di SQL Server
In caso di pubblicazione per un Sottoscrittore che esegue una versione precedente di SQL Server, è necessario considerare le limitazioni imposte dalle funzionalità di tale versione, sia in termini di funzionalità specifiche della replica che in termini di funzionalità complessive del prodotto. Non è ad esempio possibile pubblicare tipi di dati definiti dall'utente o funzioni CLR per Sottoscrittori che eseguono SQL Server 2000.
Nelle pubblicazioni di tipo merge viene utilizzato un livello di compatibilità che determina le funzionalità utilizzabili in una pubblicazione e consente di supportare i Sottoscrittori che eseguono versioni precedenti di SQL Server.
Per ulteriori informazioni, vedere Utilizzo di più versioni di SQL Server in una topologia di replica.
Pubblicazione di tabelle in più pubblicazioni
La replica supporta la pubblicazione di articoli in più pubblicazioni, nonché la ripubblicazione di dati, con le restrizioni seguenti:
Se un articolo viene pubblicato in una pubblicazione transazionale o di tipo merge, verificare che la proprietà @published_in_tran_pub sia impostata su TRUE per l'articolo di merge. Per ulteriori informazioni sull'impostazione delle proprietà, vedere Procedura: Visualizzazione e modifica delle proprietà delle pubblicazioni e degli articoli (SQL Server Management Studio) e Procedura: Visualizzazione e modifica delle proprietà degli articoli (programmazione Transact-SQL della replica).
È inoltre necessario impostare la proprietà @published_in_tran_pub se un articolo che fa parte di una sottoscrizione transazionale viene incluso in una pubblicazione di tipo merge. In questo caso, è importante tenere presente che, per impostazione predefinita, la replica transazionale prevede che le tabelle nel Sottoscrittore siano considerate di sola lettura. La modifica dei dati di una tabella in una sottoscrizione transazionale durante la replica di tipo merge potrebbe pertanto impedire la convergenza dei dati. Per evitare questa eventualità, è consigliabile specificare queste tabelle come di solo download nella pubblicazione di tipo merge. In tal modo si impedisce al Sottoscrittore di tipo merge di caricare le modifiche ai dati nella tabella. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni della replica di tipo merge con gli articoli di solo download.
Un articolo non può essere pubblicato sia in una pubblicazione di tipo merge che in una pubblicazione transazionale con sottoscrizioni ad aggiornamento in coda.
Gli articoli inclusi in pubblicazioni transazionali che supportano le sottoscrizioni aggiornabili non possono essere ripubblicati.
Se un articolo viene pubblicato in più pubblicazioni transazionali con supporto delle sottoscrizioni ad aggiornamento in coda, le proprietà seguenti devono contenere lo stesso valore per l'articolo in tutte le pubblicazioni.
Proprietà
Parametro di sp_addarticle
Gestione intervalli di valori Identity
@auto_identity_range (obsoleto) e @identityrangemangementoption
Intervallo di valori Identity del server di pubblicazione
@pub_identity_range
Intervallo di valori Identity
@identity_range
Soglia dell'intervallo di valori Identity
@threshold
Per ulteriori informazioni su questi parametri, vedere sp_addarticle (Transact-SQL).
Se un articolo viene pubblicato in più pubblicazioni di tipo merge, le proprietà seguenti devono disporre dello stesso valore per l'articolo in tutte le pubblicazioni.
Proprietà
Parametro di sp_addmergearticle
Rilevamento a livello di colonna
@column_tracking
Opzioni schema
@schema_option
Applicazioni filtri alle colonne
@vertical_partition
Opzioni di caricamento Sottoscrittore
@subscriber_upload_options
Rilevamento eliminazioni condizionale
@delete_tracking
Compensazione errori
@compensate_for_errors
Gestione intervalli di valori Identity
@auto_identity_range (obsoleto) e @identityrangemangementoption
Intervallo di valori Identity del server di pubblicazione
@pub_identity_range
Intervallo di valori Identity
@identity_range
Soglia dell'intervallo di valori Identity
@threshold
Opzioni partizioni
@partition_options
Flusso colonne BLOB
@stream_blob_columns
Tipo filtro
@filter_type (parametro in sp_addmergefilter)
Per ulteriori informazioni su questi parametri, vedere sp_addmergearticle (Transact-SQL) e sp_addmergefilter (Transact-SQL).
La replica transazionale e la replica di tipo merge non filtrata supportano la pubblicazione di una tabella in più pubblicazioni e quindi la sottoscrizione all'interno di una singola tabella del database di sottoscrizione, in base allo scenario comunemente denominato di rollup. Il rollup viene frequentemente utilizzato per aggregare subset di dati da più posizioni all'interno di una tabella in un Sottoscrittore centrale. Le pubblicazioni di tipo merge filtrate non supportano lo scenario con Sottoscrittore centrale. Per la replica di tipo merge, il rollup viene in genere implementato tramite una singola pubblicazione con filtri di riga con parametri. Per ulteriori informazioni, vedere Filtri di riga con parametri.
Vedere anche