sp_addmergearticle (Transact-SQL)
Data aggiornamento: 14 aprile 2006
Aggiunge un articolo a una pubblicazione di tipo merge esistente. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni della sintassi Transact-SQL
Sintassi
sp_addmergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
, [ @source_object = ] 'source_object'
[ , [ @type = ] 'type' ]
[ , [ @description = ] 'description' ]
[ , [ @column_tracking = ] 'column_tracking' ]
[ , [ @status = ] 'status' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] 'subset_filterclause' ]
[ , [ @article_resolver = ] 'article_resolver' ]
[ , [ @resolver_info = ] 'resolver_info' ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] 'destination_object' ]
[ , [ @allow_interactive_resolver = ] 'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] 'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] 'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] 'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] 'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] 'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] delete_tracking ]
[ , [ @compensate_for_errors = ] 'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] 'stream_blob_columns' ]
Argomenti
- [ @publication= ] 'publication'
Nome della pubblicazione contenente l'articolo. publication è di tipo sysname e non prevede alcun valore predefinito.
- [ @article= ] 'article'
Nome dell'articolo. Il nome deve essere univoco all'interno della pubblicazione. article è di tipo sysname e non prevede alcun valore predefinito. article deve essere disponibile nel computer locale che esegue Microsoft SQL Server e il nome deve essere conforme alle regole per gli identificatori.
- [ @source_object= ] 'source_object'
Oggetto di database da pubblicare. source_object è di tipo sysname e non prevede alcun valore predefinito. Per ulteriori informazioni sui tipi di oggetti che è possibile pubblicare con la replica di tipo merge, vedere Pubblicazione di dati e oggetti di database.
[ @type= ] 'type'
Tipo di articolo. type è di tipo sysname e il valore predefinito è table. I possibili valori sono i seguenti.Valore Descrizione table (predefinito)
Tabella con schema e dati. La tabella viene monitorata per determinare i dati da replicare.
func schema only
Funzione con solo schema.
indexed view schema only
Vista indicizzata con solo schema.
proc schema only
Stored procedure con solo schema.
synonym schema only
Sinonimo con solo schema.
view schema only
Vista con solo schema.
- [ @description= ] 'description'
Descrizione dell'articolo. description è di tipo nvarchar(255) e il valore predefinito è NULL.
[ @column_tracking= ] 'column_tracking'
Impostazione per il rilevamento a livello di colonna. column_tracking è di tipo nvarchar(10) e il valore predefinito è FALSE. L'impostazione true attiva il rilevamento a livello di colonna. Il valore false disattiva il rilevamento a livello di colonna e mantiene il rilevamento dei conflitti a livello di riga. Se la tabella è già pubblicata in altre pubblicazioni di tipo merge, è necessario utilizzare lo stesso valore di rilevamento a livello di colonna utilizzato dagli articoli esistenti basati su questa tabella. Questo parametro è disponibile solo per gli articoli di tabelle.[!NOTA] Se si utilizza il rilevamento a livello di riga per il rilevamento dei conflitti (impostazione predefinita), la tabella di base può includere fino a 1.024 colonne, che devono tuttavia essere filtrate dall'articolo in modo da pubblicare un massimo di 246 colonne. Se viene utilizzato il rilevamento a livello di colonna, la tabella di base può includere fino a 246 colonne. Per ulteriori informazioni sul livello di rilevamento, vedere la sezione specifica di Modalità di rilevamento e risoluzione dei conflitti da parte della replica di tipo merge.
- [ @status= ] 'status'
Stato dell'articolo. status è di tipo nvarchar(10) e il valore predefinito è unsynced. Se il valore è active, viene eseguito lo script di elaborazione iniziale per pubblicare la tabella. Se il valore è unsynced, lo script di elaborazione iniziale per pubblicare la tabella viene eseguito in occasione della successiva esecuzione dell'agente snapshot.
[ @pre_creation_cmd= ] 'pre_creation_cmd'
Azione eseguita dal sistema se, quando si applica lo snapshot, la tabella esiste già nel Sottoscrittore. pre_creation_cmd è di tipo nvarchar(10). I possibili valori sono i seguenti.Valore Descrizione none
Se la tabella esiste già nel Sottoscrittore, non viene eseguita alcuna azione.
delete
Esegue un'operazione di eliminazione in base alla clausola WHERE del filtro di subset.
drop (predefinito)
Elimina la tabella prima di ricrearla. Obbligatorio per il supporto dei Sottoscrittori Microsoft SQL Server 2005 Compact Edition.
truncate
Tronca la tabella di destinazione.
[ @creation_script= ] 'creation_script'
Percorso e nome di uno script facoltativo dello schema dell'articolo utilizzato per creare l'articolo nel database di sottoscrizione. creation_script è di tipo nvarchar(255) e il valore predefinito è NULL.[!NOTA] Gli script di creazione non vengono eseguiti nei Sottoscrittori SQL Server 2005 Compact Edition.
[ @schema_option= ] schema_option
Mappa di bit dell'opzione di generazione dello schema per l'articolo specificato. schema_option è di tipo binary(8) e può essere il prodotto | (OR bit per bit) di uno o più valori tra i seguenti.Valore
[ @subset_filterclause= ] 'subset_filterclause'
Clausola WHERE che specifica il filtraggio orizzontale di un articolo di tabella senza la parola WHERE. subset_filterclause è di tipo nvarchar(1000) e il valore predefinito è una stringa vuota.Importante: Per motivi relativi alle prestazioni, è consigliabile evitare di applicare funzioni ai nomi di colonna nelle clausole di filtro di riga con parametri, come LEFT([MyColumn]) = SUSER_SNAME()
. Se si utilizza HOST_NAME in una clausola di filtro e si sostituisce il valore di HOST_NAME, potrebbe essere necessario convertire i tipi di dati tramite CONVERT. Per ulteriori informazioni sulle procedure consigliate in questo caso, vedere la sezione relativa alla sostituzione del valore HOST_NAME() in Filtri di riga con parametri.
- [ @article_resolver= ] 'article_resolver'
Sistema di risoluzione basato su COM utilizzato per risolvere i conflitti nell'articolo di tabella oppure assembly .NET Framework richiamato per eseguire una regola business personalizzata sull'articolo di tabella. article_resolver è di tipo varchar(255) e il valore predefinito è NULL. I valori disponibili per questi parametri sono elencati nell'argomento relativo ai sistemi di risoluzione personalizzati Microsoft. Se il valore specificato non corrisponde a uno dei sistemi di risoluzione Microsoft, in SQL Server viene utilizzato il sistema di risoluzione specificato anziché quello di sistema. Utilizzare sp_enumcustomresolvers per ottenere l'elenco dei sistemi di risoluzione personalizzati disponibili. Per ulteriori informazioni, vedere Esecuzione di regole business durante la sincronizzazione di tipo merge e Rilevamento e risoluzione avanzati dei conflitti nella replica di tipo merge.
- [ @resolver_info= ] 'resolver_info'
Specifica le informazioni aggiuntive necessarie per un sistema di risoluzione personalizzato. Alcuni sistemi di risoluzione Microsoft richiedono una colonna come input. resolver_info è di tipo nvarchar(255) e il valore predefinito è NULL. Per ulteriori informazioni, vedere Sistemi di risoluzione dei conflitti basati su Microsoft COM.
- [ @source_owner= ] 'source_owner'
Nome del proprietario di source_object. source_owner è di tipo sysname e il valore predefinito è NULL. Se il valore è NULL, l'utente corrente verrà considerato il proprietario.
- [ @destination_owner= ] 'destination_owner'
Proprietario dell'oggetto nel database di sottoscrizione se diverso da "dbo". destination_owner è di tipo sysname e il valore predefinito è NULL. Se NULL, 'dbo' verrà considerato il proprietario.
[ @vertical_partition= ] 'column_filter'
Attiva e disattiva l'applicazione di filtri alle colonne in un articolo di tabella. vertical_partition è di tipo nvarchar(5) e il valore predefinito è FALSE.false indica che il filtraggio verticale non è attivato e che vengono pertanto pubblicate tutte le colonne.
Con il valore true vengono escluse tutte le colonne ad eccezione della chiave primaria dichiarata e delle colonne ROWGUID. Le colonne vengono aggiunte tramite sp_mergearticlecolumn.
[ @auto_identity_range= ] 'automatic_identity_range'
Attiva e disattiva la gestione automatica degli intervalli di valori Identity per l'articolo di tabella specificato di una pubblicazione al momento della creazione. auto_identity_range è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true attiva la gestione automatica degli intervalli di valori Identity, mentre false la disattiva.[!NOTA] Il parametro auto_identity_range è obsoleto ed è disponibile solo per compatibilità con le versioni precedenti. Per l'impostazione delle opzioni di gestione degli intervalli di valori Identity, è necessario utilizzare identityrangemanagementoption. Per ulteriori informazioni, vedere Replica di colonne Identity.
- [ @pub_identity_range= ] pub_identity_range
Controlla le dimensioni dell'intervallo di valori Identity allocato a un Sottoscrittore con una sottoscrizione server, quando è attivata la gestione automatica degli intervalli di valori Identity. L'intervallo di valori Identity è riservato al Sottoscrittore di ripubblicazione per l'assegnazione ai propri Sottoscrittori. pub_identity_range è di tipo bigint e il valore predefinito è NULL. Questo parametro è obbligatorio se la proprietà identityrangemanagementoption è impostata su auto o la proprietà auto_identity_range è impostata su true.
[ @identity_range= ] identity_range
Controlla le dimensioni dell'intervallo di valori Identity assegnato al server di pubblicazione e al Sottoscrittore quando è attivata la gestione automatica degli intervalli di valori Identity. identity_range è di tipo bigint e il valore predefinito è NULL. Questo parametro è obbligatorio se la proprietà identityrangemanagementoption è impostata su auto o la proprietà auto_identity_range è impostata su true.[!NOTA] Il parametro identity_range controlla le dimensioni dell'intervallo di valori Identity nei Sottoscrittori di ripubblicazione che utilizzano versioni precedenti di SQL Server.
- [ @threshold= ] threshold
Valore percentuale che determina quando l'agente di merge assegna un nuovo intervallo di valori Identity. L'agente di merge crea un nuovo intervallo di valori Identity quando viene utilizzata la percentuale di valori specificata in threshold. threshold è di tipo int e il valore predefinito è NULL. Questo parametro è obbligatorio se la proprietà identityrangemanagementoption è impostata su auto o la proprietà auto_identity_range è impostata su true.
[ @verify_resolver_signature= ] verify_resolver_signature
Specifica se una firma digitale viene verificata prima dell'utilizzo di un sistema di risoluzione nella replica di tipo merge. verify_resolver_signature è di tipo int e il valore predefinito è 0.0 indica che la firma non verrà verificata.
1 indica che la firma verrà verificata per stabilire se la fonte è attendibile.
- [ @destination_object= ] 'destination_object'
Nome dell'oggetto nel database di sottoscrizione. destination_object è di tipo sysname e il valore predefinito è il valore di @source_object. È possibile specificare questo parametro solo se l'articolo include solo lo schema, come nel caso di stored procedure, viste e funzioni definite dall'utente. Se l'articolo specificato è un articolo di tabella, il valore di @source_object sostituisce il valore di destination_object.
[ @allow_interactive_resolver= ] 'allow_interactive_resolver'
Attiva o disattiva l'utilizzo del sistema di risoluzione interattivo in un articolo. allow_interactive_resolver è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true attiva l'utilizzo del sistema di risoluzione interattivo per l'articolo, mentre false lo disattiva.[!NOTA] Il sistema di risoluzione interattivo non è supportato dai Sottoscrittori SQL Server 2005 Compact Edition.
- [ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
Questo parametro è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti.
[ @check_permissions= ] check_permissions
Mappa di bit delle autorizzazioni a livello di tabella verificate quando l'agente di merge applica le modifiche nel server di pubblicazione. Se l'account di accesso o l'account utente del server di pubblicazione utilizzato dal processo di merge non dispone delle autorizzazioni corrette per le tabelle, le modifiche non valide vengono registrate come conflitti. check_permissions è di tipo int e può essere il prodotto | (OR bit per bit) di uno o più dei valori seguenti.Valore Descrizione 0x00 (predefinito)
Le autorizzazioni non vengono controllate.
0x10
Le autorizzazioni vengono controllate nel server di pubblicazione prima di consentire il caricamento delle operazioni di inserimento eseguite nel Sottoscrittore.
0x20
Le autorizzazioni vengono controllate nel server di pubblicazione prima di consentire il caricamento delle operazioni di aggiornamento eseguite nel Sottoscrittore.
0x40
Le autorizzazioni vengono controllate nel server di pubblicazione prima di consentire il caricamento delle operazioni di eliminazione eseguite nel Sottoscrittore.
[ @force_invalidate_snapshot= ] force_invalidate_snapshot
Segnala che l'azione eseguita da questa stored procedure potrebbe invalidare uno snapshot esistente. force_invalidate_snapshot è di tipo bit e il valore predefinito è 0.0 indica che l'aggiunta di un articolo non invalida lo snapshot. Se la stored procedure rileva che la modifica richiede un nuovo snapshot, viene generato un errore e non viene apportata alcuna modifica.
1 specifica che l'aggiunta di un articolo potrebbe invalidare lo snapshot e, se sono disponibili sottoscrizioni che richiedono un nuovo snapshot, consente di contrassegnare lo snapshot esistente come obsoleto e di generarne uno nuovo. force_invalidate_snapshot viene impostato su 1 quando si aggiunge un articolo a una pubblicazione con uno snapshot esistente.
- [ @published_in_tran_pub= ] 'published_in_tran_pub'
Indica che un articolo in una pubblicazione di tipo merge è pubblicato anche in una pubblicazione transazionale. published_in_tran_pub è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true specifica che l'articolo è pubblicato anche in una pubblicazione transazionale.
[ @force_reinit_subscription= ] force_reinit_subscription
Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è di tipo bit e il valore predefinito è 0.0 indica che l'aggiunta di un articolo non causa la reinizializzazione della sottoscrizione. Se la stored procedure rileva che la modifica richiede la reinizializzazione delle sottoscrizioni esistenti, viene generato un errore e non viene apportata alcuna modifica.
1 indica che le modifiche apportate all'articolo di merge causano la reinizializzazione delle sottoscrizioni esistenti e autorizza la reinizializzazione. Il parametro force_reinit_subscription viene impostato su 1 quando la clausola subset_filterclause specifica un filtro di riga con parametri.
[ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
Specifica il livello di rilevamento dei conflitti per un articolo membro di un record logico. logical_record_level_conflict_detection è di tipo nvarchar(5) e il valore predefinito è FALSE.true indica che verrà rilevato un conflitto in presenza di modifiche apportate in qualsiasi posizione del record logico.
false specifica che verrà utilizzata la funzionalità predefinita di rilevamento dei conflitti, in base al valore specificato per column_tracking. Per ulteriori informazioni, vedere Raggruppamento di modifiche alla righe correlate con record logici.
[!NOTA] Poiché i record logici non sono supportati dai Sottoscrittori SQL Server 2005 Compact Edition, per il supporto di tali Sottoscrittori è necessario specificare il valore false per logical_record_level_conflict_detection.
[ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
Specifica il livello di risoluzione dei conflitti per un articolo membro di un record logico. logical_record_level_conflict_resolution è di tipo nvarchar(5) e il valore predefinito è FALSE.true specifica che l'intero record logico prevalente sovrascrive il record logico perdente.
false specifica che le righe prevalenti non sono vincolate al record logico. Se logical_record_level_conflict_detection è true, è necessario impostare su true anche logical_record_level_conflict_resolution . Per ulteriori informazioni, vedere Raggruppamento di modifiche alla righe correlate con record logici.
[!NOTA] Poiché i record logici non sono supportati dai Sottoscrittori SQL Server 2005 Compact Edition, per il supporto di tali Sottoscrittori è necessario specificare il valore false per logical_record_level_conflict_resolution.
[ @partition_options= ] partition_options
Definisce le modalità di partizionamento dei dati nell'articolo, operazione che consente di ottimizzare le prestazioni se tutte le righe appartengono a un'unica partizione o a una sola sottoscrizione. partition_options è di tipo tinyint. I possibili valori sono i seguenti.Valore Descrizione 0 (predefinito)
Il filtro applicato all'articolo è statico oppure non restituisce un subset di dati univoco per ogni partizione, ovvero si creano partizioni sovrapposte.
1
Le partizioni sono sovrapposte e gli aggiornamenti DML (Data Manipulation Language) eseguiti nel Sottoscrittore non possono modificare la partizione a cui appartiene una riga.
2
Il filtro applicato all'articolo restituisce partizioni non sovrapposte, ma più Sottoscrittori possono ricevere la stessa partizione.
3
Il filtro applicato all'articolo restituisce partizioni non sovrapposte univoche per ogni sottoscrizione.
[!NOTA] Se la tabella di origine di un articolo è già pubblicata in un'altra pubblicazione, il valore di partition_options deve essere uguale per entrambi gli articoli.
- [ @processing_order= ] processing_order
Indica l'ordine di elaborazione degli articoli in una pubblicazione di tipo merge. processing_order è di tipo int e il valore predefinito è 0. 0 indica che l'articolo non è ordinato e qualsiasi altra impostazione specifica il valore ordinale dell'ordine di elaborazione per l'articolo. Gli articoli vengono elaborati in ordine crescente in base al valore. Se il valore di due articoli è identico, l'ordine di elaborazione dipende dalla posizione del nome alternativo dell'articolo nella tabella di sistema sysmergearticles. Per ulteriori informazioni, vedere Impostazione dell'ordine di elaborazione degli articoli di merge.
[ @subscriber_upload_options= ] subscriber_upload_options
Specifica le restrizioni per gli aggiornamenti eseguiti in un Sottoscrittore con una sottoscrizione client. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni della replica di tipo merge con gli articoli di solo download. subscriber_upload_options è di tipo tinyint. I possibili valori sono i seguenti.Valore Descrizione 0 (predefinito)
Nessuna restrizione. Le modifiche eseguite nel Sottoscrittore vengono caricate nel server di pubblicazione.
1
Sono consentite modifiche in un Sottoscrittore, ma tali modifiche non vengono caricate nel server di pubblicazione.
2
Non sono consentite modifiche nel Sottoscrittore.
[!NOTA] Se la tabella di origine di un articolo è già pubblicata in un'altra pubblicazione, il valore di subscriber_upload_options deve essere uguale per entrambi gli articoli.
[ @identityrangemanagementoption= ] identityrangemanagementoption
Specifica la modalità di gestione degli intervalli di valori Identity per l'articolo. identityrangemanagementoption è di tipo nvarchar(10). I possibili valori sono i seguenti.Valore Descrizione none
Disattiva la gestione degli intervalli di valori Identity.
manual
Contrassegna la colonna Identity con NOT FOR REPLICATION per consentire la gestione manuale degli intervalli di valori Identity.
auto
Imposta la gestione automatica degli intervalli di valori Identity.
NULL (predefinito)
Per impostazione predefinita, viene impostato il valore none quando il valore di auto_identity_range non è true.
Per compatibilità con le versioni precedenti, quando il valore di identityrangemanagementoption è NULL, viene controllato il valore di auto_identity_range . Se, tuttavia, il valore di identityrangemanagementoption è diverso da NULL, il valore di auto_identity_range viene ignorato. Per ulteriori informazioni, vedere Replica di colonne Identity.
[ @delete_tracking= ] 'delete_tracking'
Indica se le operazioni di eliminazione vengono replicate. delete_tracking è di tipo nvarchar(5) e il valore predefinito è TRUE. Il valore false indica che le operazioni di eliminazione non vengono incluse nella replica, mentre true indica che tali operazioni vengono replicate, situazione corrispondente al normale funzionamento della replica di tipo merge. Se delete_tracking è impostato su false, le righe eliminate nel Sottoscrittore devono essere rimosse manualmente nel server di pubblicazione e viceversa.Importante: L'impostazione di delete_tracking su false impedisce la convergenza. Se la tabella di origine di un articolo è già pubblicata in un'altra pubblicazione, il valore di delete_tracking deve essere uguale per entrambi gli articoli. [!NOTA] Non è possibile impostare le opzioni delete_tracking tramite Creazione guidata nuova pubblicazione o la finestra di dialogo Proprietà pubblicazione.
[ @compensate_for_errors= ] 'compensate_for_errors'
Indica se vengono eseguite azioni di compensazione in caso di errori durante la sincronizzazione. compensate_for_errors i è di tipo nvarchar(5) e il valore predefinito è FALSE. Se impostato su true, in caso di modifiche non applicabili nel Sottoscrittore o nel server di pubblicazione durante la sincronizzazione vengono sempre eseguite azioni di compensazione per annullare la modifica. Tuttavia, se l'errore viene generato da un Sottoscrittore configurato in modo non corretto, questa impostazione può causare l'annullamento delle modifiche anche in altri Sottoscrittori e server di pubblicazione. Il valore false consente di disattivare le azioni di compensazione. Gli errori vengono comunque registrati e nelle operazioni di merge successive vengono eseguiti ulteriori tentativi di applicazione delle modifiche fino a ottenere un risultato positivo.[!NOTA] Per le sottoscrizioni pull in Sottoscrittori che eseguono Microsoft SQL Server 2000 versione 8.00.858 e precedenti (incluso SP3), le azioni di compensazione vengono eseguite anche se compensate_for_errors è impostato su false.
Importante: Anche se i dati nelle righe interessate potrebbero sembrare non convergenti, non appena vengono risolti gli eventuali errori generati le modifiche potranno essere applicate e si otterrà la convergenza dei dati. Se la tabella di origine di un articolo è già pubblicata in un'altra pubblicazione, il valore di compensate_for_errors deve essere uguale per entrambi gli articoli.
[ @stream_blob_columns= ] 'stream_blob_columns'
Specifica se viene utilizzata l'ottimizzazione del flusso di dati per la replica di colonne BLOB (Binary Large Object). stream_blob_columns è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true indica che verrà tentato di eseguire l'ottimizzazione.Importante: L'attivazione di questa ottimizzazione della memoria può ridurre le prestazioni dell'agente di merge durante la sincronizzazione. È consigliabile utilizzare questa opzione solo se vengono replicate colonne contenenti più megabyte di dati. [!NOTA] Alcune funzionalità della replica di tipo merge, come i record logici, potrebbero comunque impedire l'utilizzo dell'ottimizzazione del flusso per la replica di oggetti BLOB anche se stream_blob_columns è impostato su true.
Osservazioni
La stored procedure sp_addmergearticle viene utilizzata per la replica di tipo merge.
Quando si pubblicano gli oggetti, nei Sottoscrittori vengono copiate le relative definizioni. Per la pubblicazione di un oggetto di database che dipende da altri oggetti, è necessario pubblicare tutti gli oggetti a cui fa riferimento. Se si pubblica una vista che dipende da una tabella, ad esempio, è necessario pubblicare anche la tabella.
Se si specifica il valore 3 per la proprietà partition_options, per ogni partizione dei dati dell'articolo può esistere una sola sottoscrizione. Se si crea una seconda sottoscrizione nella quale il criterio di filtro porta alla restituzione della stessa partizione della sottoscrizione esistente, quest'ultima viene eliminata.
Se si imposta il valore 3 per partition_options, la rimozione dei metadati viene eseguita per ogni esecuzione dell'agente di merge e lo snapshot partizionato scade più rapidamente. Quando si utilizza questa opzione è consigliabile prendere in considerazione l'attivazione di snapshot partizionati richiesti dal Sottoscrittore. Per ulteriori informazioni, vedere Snapshot per pubblicazioni di tipo merge con filtri con parametri.
L'aggiunta di un articolo con un filtro orizzontale statico, tramite subset_filterclause, a una pubblicazione esistente con articoli che includono filtri con parametri richiede la reinizializzazione delle sottoscrizioni.
Se si specifica processing_order, è consigliabile impostare valori di ordine con gap nella sequenza per semplificare l'impostazione di nuovi valori in futuro. Ad esempio, se esistono tre articoli denominati Articolo1, Articolo2 e Articolo3, impostare processing_order su 10, 20 e 30, anziché su 1, 2 e 3. Per ulteriori informazioni, vedere Impostazione dell'ordine di elaborazione degli articoli di merge.
Tabella delle opzioni predefinite dello schema
In questa tabella vengono indicati i valori predefiniti impostati dalla stored procedure quando si specifica un valore NULL per schema_option, valori che dipendono dal tipo di articolo.
Tipo di articolo | Valore delle opzioni di schema |
---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
|
view schema only |
0x01 |
[!NOTA] Se la pubblicazione supporta versioni precedenti di SQL Server, l'opzione di schema predefinita per table è 0x30034FF1.
Tabella delle opzioni di schema valide
Nella tabella seguente vengono descritti i valori schema_option consentiti in base al tipo di articolo.
Tipo di articolo | Valori delle opzioni di schema |
---|---|
func schema only |
0x01 e 0x2000 |
indexed view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 e 0x200000 |
proc schema only |
0x01 e 0x2000 |
table |
Tutte le opzioni. |
view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 e 0x200000 |
Autorizzazioni
È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Esempio
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.EmployeeID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Vedere anche
Riferimento
sp_changemergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Stored procedure per la replica (Transact-SQL)
Altre risorse
How to: Define an Article (Replication Transact-SQL Programming)
Pubblicazione di dati e oggetti di database
Replica di colonne Identity
Modalità di rilevamento e risoluzione dei conflitti da parte della replica di tipo merge
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|
5 dicembre 2005 |
|