Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si crea una pubblicazione, si scelgono le tabelle e altri oggetti di database da pubblicare. È possibile pubblicare gli oggetti di database seguenti usando la replica.
| Oggetto database | Replicazione snapshot e replicazione transazionale | Replicazione di tipo merge |
|---|---|---|
| Tabelle | X | X |
| Tabelle partizionate | X | X |
| Stored Procedures - Definizione (Transact-SQL e CLR) | X | X |
| Stored procedure - Esecuzione (Transact-SQL e CLR) | X | No |
| Visualizzazioni | X | X |
| Viste indicizzate | X | X |
| Viste indicizzate come tabelle | X | No |
| Tipi User-Defined (CLR) | X | X |
| Funzioni User-Defined (Transact-SQL e CLR) | X | X |
| Tipi di dati alias | X | X |
| Indici full-text | X | X |
| Oggetti schema (vincoli, indici, trigger DML utente, proprietà estese e regole di confronto) | X | X |
Creazione di pubblicazioni
Per creare una pubblicazione, specificare 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 merge).
Oggetti di dati e database (articoli) da includere nella pubblicazione.
Filtri di riga statici e filtri di colonna per tutti i tipi di pubblicazioni e filtri di riga con parametri e filtri di join per le pubblicazioni di tipo merge.
Pianificazione dell'agente snapshot.
Account con cui verranno eseguiti gli agenti seguenti: Agente Snapshot per tutte le pubblicazioni; Agente di lettura dei log per tutte le pubblicazioni transazionali; Agente di lettura delle code per le pubblicazioni transazionali che consentono l'aggiornamento delle sottoscrizioni.
Nome e descrizione della pubblicazione.
Per informazioni sull'utilizzo delle pubblicazioni, vedere gli argomenti seguenti:
Annotazioni
L'eliminazione di un articolo o di una pubblicazione non comporta la rimozione di oggetti dal Sottoscrittore.
Pubblicazione di tabelle
L'oggetto pubblicato più comunemente è una tabella. I collegamenti seguenti forniscono 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, vincoli di riferimento, vincoli univoci), indici, trigger DML utente (non è possibile replicare trigger DDL), 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, vedere Specificare le opzioni dello schema o 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 e dalle opzioni specificate per la pubblicazione e gli articoli associati alle tabelle partizionate. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
Pubblicazione delle procedure memorizzate
Tutti i tipi di replica consentono di replicare le definizioni di stored procedure: create PROCEDURE viene copiata in ogni Sottoscrittore. Nel caso di stored procedure CLR (Common Language Runtime), viene copiato anche l'assembly associato. Le modifiche apportate alle procedure vengono replicate ai sottoscrittori; le modifiche agli assembly associati no.
Oltre a replicare la definizione di una stored procedure, la replica transazionale consente di replicare l'esecuzione di stored procedure. Ciò è utile per replicare i risultati delle stored procedure orientate alla manutenzione che influiscono su grandi quantità di dati. Per altre informazioni, vedere Pubblicazione dell'esecuzione di stored procedure nella replica transazionale.
Visualizzazioni di pubblicazione
Tutti i tipi di replica consentono di replicare le viste. La vista e l'indice adiacente, se è una vista indicizzata, possono essere copiati nel Sottoscrittore, ma è necessario replicare anche la tabella di base.
Per le viste indicizzate, la replica transazionale consente anche di replicare la vista indicizzata come tabella anziché come vista, eliminando la necessità 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 altre informazioni sull'uso di sp_addarticle, vedere Definire un articolo.
Pubblicazione di funzioni User-Defined
Le istruzioni CREATE FUNCTION per le funzioni CLR e le funzioni Transact-SQL vengono copiate in ogni Sottoscrittore. Nel caso delle funzioni CLR, viene copiato anche l'assembly associato. Le modifiche apportate alle funzioni vengono replicate nei sottoscrittori, mentre le modifiche agli assembly associati non lo sono.
Pubblicazione dei tipi User-Defined e dei tipi di dati alias
Le colonne che utilizzano tipi utente definiti o tipi di dati alias vengono replicate ai sottoscrittori come altre colonne. L'istruzione CREATE TYPEstatement per ogni tipo replicato viene eseguita nel Sottoscrittore prima della creazione della tabella. Nel caso di tipi definiti dall'utente, l'assembly associato viene copiato anche in ogni Sottoscrittore. Le modifiche ai tipi definiti dall'utente e ai tipi di dati alias non vengono replicate nei Sottoscrittori.
Se un tipo è definito in un database, ma non viene fatto riferimento in alcuna colonna quando viene creata una pubblicazione, il tipo non viene copiato nei Sottoscrittori. Se successivamente si crea una colonna di tale tipo nel database e si vuole replicarla, è necessario prima copiare manualmente il tipo (e l'assembly associato per un tipo definito dall'utente) in ogni Sottoscrittore.
Pubblicazione di indici full-text
L'istruzione CREATE FULLTEXT INDEX viene copiata in ogni Sottoscrittore e l'indice full-text viene creato nel Sottoscrittore. Le modifiche apportate agli indici full-text che usano ALTER FULLTEXT INDEX non vengono replicate.
Apportare modifiche allo schema agli 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 in un server di pubblicazione di SQL Server, tale modifica viene propagata per impostazione predefinita a tutti i Sottoscrittori di SQL Server:
ALTER TABLE
Modificare la visualizzazione
MODIFICA PROCEDURA
ALTER FUNCTION
ALTER TRIGGER
Per altre informazioni, vedere Apportare modifiche allo schema nei database di pubblicazione.
Considerazioni sulla pubblicazione
Quando si pubblicano oggetti di database, tenere presenti i problemi seguenti:
Il database è accessibile agli utenti durante la creazione della pubblicazione e dello snapshot iniziale, ma è consigliabile creare pubblicazioni durante i periodi di attività inferiori nel server di pubblicazione.
Non è possibile rinominare un database dopo la creazione di una pubblicazione. Per rinominarla, è prima necessario rimuovere la replica dal database.
Se si pubblica un oggetto di database che dipende da uno o più oggetti di database, è necessario pubblicare tutti gli oggetti a cui si fa riferimento. Ad esempio, se si pubblica una vista che dipende da una tabella, è necessario pubblicare anche la tabella.
Annotazioni
Se si aggiunge un articolo a una pubblicazione di tipo merge e un articolo esistente dipende dal nuovo articolo, è necessario specificare un ordine di elaborazione per entrambi gli articoli utilizzando il parametro @processing_order di sp_addmergearticle e sp_changemergearticle. Si consideri lo scenario seguente: si pubblica una tabella, ma non si pubblica una funzione a cui fa riferimento la tabella. Se non si pubblica la funzione, la tabella non può essere creata nel Sottoscrittore. Quando si aggiunge la funzione alla pubblicazione: specificare il valore 1 per il parametro @processing_order di sp_addmergearticle; e specificare il valore 2 per il parametro @processing_order di sp_changemergearticle, specificando il nome della tabella per il parametro @article. Questo ordine di elaborazione garantisce di creare la funzione nel Sottoscrittore prima della tabella che ne dipende. È possibile usare numeri diversi per ogni articolo, purché il numero per la funzione sia inferiore al numero della tabella.
I nomi delle pubblicazioni non possono includere i caratteri seguenti: % * [ ] | : " ? \ / <>.
Limitazioni per la pubblicazione di oggetti
Il numero massimo di articoli e colonne che è possibile pubblicare varia in base al tipo di pubblicazione. Per altre 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 dall'utente definite come WITH ENCRYPTION non possono essere pubblicate come parte della replica di SQL Server.
Le raccolte di XML Schema possono essere replicate, ma le modifiche non vengono replicate dopo lo snapshot iniziale.
Le tabelle pubblicate per la replica transazionale devono avere una chiave primaria. Se una tabella si trova in una pubblicazione di replica transazionale, non è possibile disabilitare gli indici associati alle colonne chiave primaria. Questi indici sono necessari per la replica. Per disabilitare un indice, è prima necessario eliminare la tabella dalla pubblicazione.
I valori predefiniti vincolati creati con sp_bindefault (Transact-SQL) non sono soggetti a replicazione (i valori predefiniti vincolati sono obsoleti a favore dei valori predefiniti creati con la parola chiave DEFAULT di ALTER TABLE o CREATE TABLE).
Le funzioni che contengono l'indicazione
NOEXPANDnelle viste indicizzate non possono essere pubblicate nella stessa pubblicazione delle tabelle e delle viste indicizzate di riferimento, a causa dell'ordine in cui l'agente di distribuzione le recapita. Per risolvere questo problema, posizionare la creazione della tabella e della vista indicizzata in una prima pubblicazione e aggiungere funzioni contenenti l'hintNOEXPANDsulle viste indicizzate a una seconda pubblicazione pubblicata al termine della prima pubblicazione. In alternativa, creare script per queste funzioni e recapitare lo script usando il parametro @post_snapshot_script disp_addpublication.
Schemi e proprietà dell'oggetto
La replicazione ha il comportamento predefinito seguente nella Creazione Guidata Nuova Pubblicazione rispetto agli schemi e alla proprietà dell'oggetto:
Per gli articoli nelle pubblicazioni di tipo merge con un livello di compatibilità di 90 o superiore, pubblicazioni snapshot e pubblicazioni transazionali: per impostazione predefinita, il proprietario dell'oggetto nel Subscriber corrisponde al proprietario dell'oggetto corrispondente nel Publisher. Se gli schemi proprietari di oggetti non esistono nel Sottoscrittore, vengono creati automaticamente.
Per gli articoli nelle pubblicazioni di tipo merge con un livello di compatibilità inferiore a 90: per impostazione predefinita, il proprietario viene lasciato vuoto e viene specificato come dbo durante la creazione dell'oggetto nel Sottoscrittore.
Per gli articoli nelle pubblicazioni Oracle: per impostazione predefinita, il proprietario viene specificato come dbo.
Per gli articoli nelle pubblicazioni che usano snapshot in modalità carattere (usati per sottoscrittori non SQL Server e sottoscrittori di SQL Server Compact): per impostazione predefinita, il proprietario viene lasciato vuoto. Per impostazione predefinita, il proprietario è il proprietario associato all'account utilizzato dall'Agente di distribuzione o dall'Agente di unione per connettersi al Sottoscrittore.
Il proprietario dell'oggetto può essere modificato tramite la finestra di dialogo Proprietà articolo - <Articolo> e tramite le stored procedure seguenti: sp_addarticle, sp_addmergearticle, sp_changearticle e sp_changemergearticle. Per altre informazioni, vedere Visualizzare e modificare le proprietà della pubblicazione, Definire un articolo e Visualizzare e modificare le proprietà dell'articolo.
Pubblicazione di dati nei Sottoscrittori che eseguono versioni precedenti di SQL Server
Se si pubblica in un Sottoscrittore che esegue una versione precedente di SQL Server, si è limitati alle funzionalità di tale versione, sia in termini di funzionalità specifiche della replica che della funzionalità del prodotto nel suo complesso.
Le pubblicazioni di tipo merge usano un livello di compatibilità, che determina quali funzionalità possono essere usate in una pubblicazione e consentono di supportare i Sottoscrittori che eseguono versioni precedenti di SQL Server.
Pubblicazione di tabelle in più pubblicazioni
La replica supporta la pubblicazione di articoli in più pubblicazioni (inclusi i dati di ripubblicazione) con le restrizioni seguenti:
Se un articolo viene pubblicato in una pubblicazione transazionale e in una pubblicazione di tipo merge, verificare che la proprietà @published_in_tran_pub sia impostata su TRUE per l'articolo di merge. Per altre informazioni sull'impostazione delle proprietà, vedere Visualizzare e modificare le proprietà della pubblicazione e Visualizzare e modificare le proprietà dell'articolo.
È inoltre necessario impostare la proprietà @published_in_tran_pub se un articolo fa parte di una sottoscrizione transazionale ed è incluso in una pubblicazione di tipo merge. In questo caso, tenere presente che per impostazione predefinita la replica transazionale prevede che le tabelle nel Sottoscrittore vengano considerate di sola lettura; se la replica di tipo merge apporta modifiche ai dati a una tabella in una sottoscrizione transazionale, può verificarsi una mancata convergenza dei dati. Per evitare tale eventualità, è consigliabile specificare una tabella di questo tipo come solo per il download nella pubblicazione di unione. In questo modo, un Sottoscrittore di tipo merge non carica le modifiche ai dati nella tabella. Per altre informazioni, vedere Ottimizzare le 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.
Non è possibile ripubblicare gli articoli inclusi nelle pubblicazioni transazionali che supportano la ripubblicazione delle sottoscrizioni ad aggiornamento.
Se un articolo viene pubblicato in più pubblicazioni transazionali che supporta sottoscrizioni ad aggiornamento in coda, le proprietà seguenti devono avere lo stesso valore per l'articolo in tutte le pubblicazioni:
Proprietà Parametro in sp_addarticle Gestione dell'intervallo di valori Identity @auto_identity_range (deprecato) e @identityrangemanagementoption Intervallo di identità del pubblicatore @pub_identity_range Intervallo di valori Identity @identity_range Soglia dell'intervallo di identità @threshold Per altre informazioni su questi parametri, vedere sp_addarticle (Transact-SQL).
Se un articolo viene pubblicato in più pubblicazioni di tipo merge, le proprietà seguenti devono avere lo stesso valore per l'articolo in tutte le pubblicazioni:
Proprietà Parametro in sp_addmergearticle Rilevamento colonne @column_tracking Opzioni schema @schema_option Filtraggio delle colonne @vertical_partition Opzioni di caricamento dell'abbonato @opzioni_di_caricamento_per_gli_abbonati Rilevamento eliminazione condizionale @delete_tracking Compensazione degli errori @compensate_for_errors Gestione del range di identità @auto_identity_range (deprecato) e @identityrangemanagementoption Intervallo di identità del publisher @pub_identity_range Intervallo di valori Identity @identity_range Soglia dell'intervallo di valori Identity @threshold Opzioni di partizionamento @partition_options Flusso delle colonne BLOB @stream_blob_columns Tipo filtro @filter_type (parametro in sp_addmergefilter) Per altre informazioni su questi parametri, vedere sp_addmergearticle (Transact-SQL) e sp_addmergefilter (Transact-SQL).
La replica transazionale e la replica di tipo merge non filtrato supportano la pubblicazione di una tabella in più pubblicazioni e quindi la sottoscrizione all'interno di una singola tabella nel database di sottoscrizione (comunemente definita scenario di rollup). Il rollup viene spesso usato per aggregare subset di dati da più posizioni in una tabella in un Sottoscrittore centrale. Le pubblicazioni di tipo merge filtrate non supportano lo scenario del 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 altre informazioni sui filtri di riga con parametri, vedere Filtri di riga con parametri.
Vedere anche
Aggiungere articoli a ed eliminare articoli da pubblicazioni esistenti
Configurare la distribuzione
Inizializzare una sottoscrizione
Scripting Replication
Proteggere il Publisher
Sottoscrivere pubblicazioni