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.
Si applica a:SQL Server e
Istanza gestita di SQL di Azure
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 | Replicazione snapshot e replicazione 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 |
| Visualizzazioni | 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 di testo completo | 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, fornisci le seguenti informazioni:
- Distributore.
- La posizione dei file di snapshot.
- Il database delle pubblicazioni.
- 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 sotto i quali operano i seguenti agenti: l'agente di snapshot per tutte le pubblicazioni; il Log Reader Agent per tutte le pubblicazioni transazionali; il Queue Reader Agent per le pubblicazioni transazionali che permettono di aggiornare le sottoscrizioni.
- Nome e descrizione della pubblicazione.
Per informazioni su come lavorare con le pubblicazioni, consulta i seguenti articoli:
- Creare una pubblicazione
- Definire un articolo
- Visualizzare e modificare le proprietà della pubblicazione
- Visualizzare e modificare le proprietà degli articoli
- Eliminare una pubblicazione
- Eliminare un articolo
Nota
Eliminare un articolo o una pubblicazione non rimuove gli oggetti dall'abbonato.
Tabelle di pubblicazione
L'oggetto più comunemente pubblicato è costituito da una tabella. I seguenti link forniscono ulteriori informazioni su come pubblicare le tabelle:
- Filtrare i dati pubblicati
- Opzioni articolo per la replica transazionale
- Opzioni degli articoli per la replica di tipo merge
- Replica colonne di identità
Quando pubblichi una tabella per la replica, puoi specificare quali oggetti schema copiare all'Abbonato, come l'integrità referenziale dichiarata (vincoli chiave primarie, vincoli di riferimento, vincoli unici), indici, trigger DML utente (i trigger DDL non possono essere replicati), proprietà estese e collation. 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 oppure SchemaOption.
Tabelle e indici partizionati
La replica supporta la pubblicazione di tabelle e indici partizionati. Il livello di supporto dipende dal tipo di replica che usi e dalle opzioni che specifichi per la pubblicazione e gli articoli associati alle tabelle partizionate. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
Pubblicazione delle stored procedure
Tutti i tipi di replica permettono di replicare le definizioni delle stored procedure: l'estratto CREATE PROCEDURE viene copiato a ciascun abbonato. Nel caso di stored procedure CLR (Common Language Runtime), viene inoltre copiato anche l'assembly associato. Le modifiche alle procedure vengono replicate ai Sottoscrittori; quelle agli assembly associati non vengono replicate.
Oltre alla replica della definizione di una stored procedure, la replica transazionale consente di replicare l'esecuzione di stored procedure. Questa funzione è utile per replicare i risultati di stored procedure orientate alla manutenzione che influenzano grandi quantità di dati. Per altre informazioni, vedere Pubblicazione dell'esecuzione di stored procedure nella replica transazionale.
Pubblicazione di visualizzazioni
Tutti i tipi di replica consentono di replicare viste. Puoi copiare la vista e l'indice associato (se si tratta di una vista indicizzata) nel Sottoscrittore, ma devi anche replicare la tabella sottostante.
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 altre informazioni sull'uso di sp_addarticle, vedere Definire un articolo.
Pubblicazione di funzioni definite dall'utente
Le istruzioni CREATE FUNCTION per le funzioni CLR e le funzioni Transact-SQL vengono copiate a ogni Sottoscrittore. Nel caso di funzioni CLR, viene inoltre copiato anche l'assembly associato. Le modifiche alle funzioni vengono replicate ai Subscriber; quelle agli assembly associati non vengono replicate.
Pubblicazione di tipi di dati definiti dall'utente e tipi di dati alias
La replica tratta le colonne che utilizzano tipi definiti dall'utente o tipi di dati alias come altre colonne e li replica agli Abbonati. Il processo esegue l'istruzione CREATE TYPE per ciascun tipo replicato presso il Sottoscrittore prima di creare la tabella. Per i tipi definiti dall’utente, la replica copia anche l'assembly associato a ciascun Sottoscrittore. La replicazione non replica le modifiche ai tipi definiti dall'utente e ai tipi di dati alias agli Abbonati.
Se definisci un tipo in un database ma non lo riferisci in nessuna colonna quando crei una pubblicazione, la replica non copia il tipo in Abbonati. Se successivamente crei una colonna di quel tipo nel database e vuoi replicarla, devi prima copiare manualmente il tipo (e l'assembly associato per un tipo definito dall'utente) a ciascun Abbonato.
Pubblicazione di indici full-text
L'istruzione CREATE FULLTEXT INDEX viene copiata a ogni Sottoscrittore e l'indice di testo completo viene creato presso il Sottoscrittore. Le modifiche apportate agli indici full-text che usano 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 seguenti modifiche dello schema all'oggetto pubblicato appropriato in un server di pubblicazione SQL Server, per impostazione predefinita la replica propaga tali modifiche a tutti i Sottoscrittori SQL Server:
ALTER TABLE
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
ALTER TRIGGER
Per altre informazioni, vedere Apportare modifiche allo schema nei database di pubblicazione.
Considerazioni per la pubblicazione
Tieni a mente le seguenti considerazioni quando pubblichi oggetti di database:
Gli utenti possono accedere al database durante la creazione della pubblicazione e lo snapshot iniziale, ma è meglio creare pubblicazioni nei periodi di attività più bassa su Publisher.
Non puoi rinominare un database dopo averne creato una pubblicazione. Per rinominare il database, devi prima rimuovere la replica dal database.
Se stai pubblicando un oggetto di database che dipende da uno o più altri oggetti di database, devi pubblicare tutti gli oggetti di riferimento. Se ad esempio si pubblica una vista che dipende da una tabella, sarà necessario pubblicare anche la tabella.
Nota
Se aggiungi un articolo a una pubblicazione di fusione e un articolo esistente dipende dal nuovo articolo, devi specificare un ordine di elaborazione per entrambi gli articoli utilizzando il parametro @processing_ordersp_addmergearticle e sp_changemergearticle. Consideriamo il seguente scenario: pubblichi una tabella ma non una funzione che la tabella fa riferimento. Se non pubblichi la funzione, la tabella non può essere creata dall'abbonato. Quando si aggiunge la funzione alla pubblicazione, specificare un valore 1 per il parametro @processing_order di sp_addmergearticlee 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 seguenti caratteri: % * [ ] | : " ? \ / <>.
Limitazioni sulla pubblicazione degli oggetti
Il numero massimo di articoli e colonne che puoi pubblicare varia a seconda del tipo di pubblicazione. Per altre informazioni, vedere la sezione "Oggetti di replica" in Specifiche di capacità massima per SQL Server.
Non puoi pubblicare le stored procedure, le viste, i trigger e le funzioni definite dall'utente definite con WITH ENCRYPTION nell'ambito della replica di SQL Server.
Puoi replicare le collezioni di schema 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 si trova in una pubblicazione di replica transazionale, non puoi disabilitare indici associati alle colonne chiave primarie. La replicazione richiede questi indici. Per disabilitare un indice, è innanzitutto necessario eliminare la tabella dalla pubblicazione.
I predefiniti vincolati creati con sp_bindefault (Transact-SQL) non vengono replicati (i predefiniti vincolati vengono deprecati a favore di quelli creati con la DEFAULT parola chiave di ALTER TABLE o CREATE TABLE).
Non puoi pubblicare funzioni che contengono il hint NOEXPAND su viste indicizzate nella stessa pubblicazione delle tabelle e delle viste indicizzate a cui fanno riferimento, a causa dell'ordine in cui l'agente di distribuzione li recapita. Per risolvere questo problema, collocare la creazione di tabella e vista indicizzata in una prima pubblicazione, e aggiungere funzioni contenenti l'hint NOEXPAND sulle viste indicizzate di una seconda pubblicazione, che sarà pubblicata dopo il completamento della prima. In alternativa, creare script per queste funzioni e consegnare lo script utilizzando il parametro @post_snapshot_script di sp_addpublication.
Schemi e proprietà degli oggetti
Per quanto riguarda gli schemi e la proprietà degli oggetti, la replicazione presenta il seguente comportamento predefinito nella Creazione guidata Nuova pubblicazione:
Per gli articoli di pubblicazioni di tipo merge con un livello di compatibilità 90 o superiore, per le pubblicazioni snapshot e quelle transazionali: per impostazione predefinita, il proprietario dell'oggetto nel Sottoscrittore è uguale al proprietario dell'oggetto corrispondente nel server di pubblicazione. Se nel Sottoscrittore non esistono gli schemi che possiedono gli oggetti, vengono creati automaticamente.
Per articoli contenuti in 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 articoli contenuti in pubblicazioni Oracle: per impostazione predefinita, viene specificato il proprietario dbo.
Per gli articoli delle pubblicazioni che utilizzano snapshot in modalità caratteri (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 è quello associato all'account utilizzato dal agente di distribuzione o dal agente di merge per connettersi al Sottoscrittore.
Puoi cambiare il proprietario dell'oggetto tramite la finestra di dialogo Proprietà Articolo < - Articolo> e tramite le seguenti procedure memorizzate: 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à degli articoli.
Pubblicazione di dati per Sottoscrittori che eseguono versioni precedenti di SQL Server
Se pubblichi a un abbonato che esegue una versione precedente di SQL Server, sei limitato alle funzionalità di quella versione. Questa limitazione si applica sia alla funzionalità specifica della replica sia alla funzionalità complessiva del prodotto.
Le pubblicazioni di fusione utilizzano un livello di compatibilità, che determina quali funzionalità puoi utilizzare in una pubblicazione e ti permette di supportare gli Abbonati che utilizzano versioni precedenti di SQL Server.
Pubblicazione di tabelle in più pubblicazioni
La replica supporta la pubblicazione di articoli in più pubblicazioni, inclusa la ripubblicazione dei dati, con le seguenti restrizioni:
Se pubblichi un articolo sia in una pubblicazione transazionale che in una pubblicazione di fusione, imposta la proprietà @published_in_tran_pub 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à degli articoli.
Imposta la proprietà @published_in_tran_pub se un articolo fa parte di un abbonamento transazionale ed è incluso in una pubblicazione di fusione. Per impostazione predefinita, la replica transazionale prevede che le tabelle nel Sottoscrittore siano di sola lettura. Se la replicazione tramite fusione apporta modifiche ai dati di una tabella in una sottoscrizione transazionale, può verificarsi la non convergenza dei dati. Per evitare questo problema, specificare qualsiasi tabella come solo scaricabile nella pubblicazione del merge. Questa impostazione impedisce a un Sottoscrittore merge di caricare le modifiche ai dati nella tabella. Per altre informazioni, vedere Ottimizzare le prestazioni della replica di tipo merge con gli articoli di solo download.
Non puoi pubblicare un articolo sia in una pubblicazione di fusione che in una pubblicazione transazionale con abbonamenti aggiornati in coda.
Non puoi ripubblicare articoli inclusi in pubblicazioni transazionali che supportano l'aggiornamento degli abbonamenti.
Se pubblichi un articolo in più di una pubblicazione transazionale che supporta abbonamenti ad aggiornamento in coda, l'articolo deve avere lo stesso valore per le seguenti proprietà in tutte le pubblicazioni:
Proprietà Parametro di sp_addarticle Gestione dell'intervallo di identità @auto_identity_range (deprecato) e @identityrangemangementoption Intervallo di identità dell'editore @pub_identity_range Intervallo di identità @identity_range Soglia dell'intervallo di identità @threshold Per altre informazioni su questi parametri, vedere sp_addarticle (Transact-SQL).
Se pubblichi un articolo in più di una pubblicazione di fusione, l'articolo deve avere lo stesso valore per le seguenti proprietà in tutte le pubblicazioni:
Proprietà Parametro di sp_addmergearticle Tracciamento delle colonne @column_tracking Opzioni schema @schema_option Applicazione di filtri alle colonne @vertical_partition Opzioni di caricamento dell'abbonato @subscriber_upload_options Tracciamento dell'eliminazione condizionale @delete_tracking Compensazione errori @compensate_for_errors Gestione dell'intervallo di identità @auto_identity_range (deprecato) e @identityrangemangementoption Intervallo di identità dell'editore @pub_identity_range Intervallo di identità @identity_range Soglia dell'intervallo di identità @threshold Opzioni di partizione @partition_options Streaming di colonne BLOB @stream_blob_columns Tipo di 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 fusione non filtrata supportano la pubblicazione di una tabella in più pubblicazioni e poi l'iscrizione all'interno di una singola tabella nel database degli abbonamenti (comunemente chiamato scenario rollup). Il rollup è spesso utilizzato per aggregare sottoinsiemi di dati provenienti da più posizioni in un'unica tabella presso un abbonato centrale. Le pubblicazioni di fusione filtrate non supportano lo scenario centrale degli abbonati. Per la replica di fusione, il rollup viene tipicamente implementato tramite una singola pubblicazione con filtri a righe parametrizzati. Per altre informazioni sui filtri di riga con parametri, vedere Filtri di riga con parametri.