sp_addmergearticle (Transact-SQL)
Aggiunge un articolo a una pubblicazione di tipo merge esistente. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
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 MicrosoftSQL 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 viewschema 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 trueattiva 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 MicrosoftSQL Server Compact 3.5 SP1.
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 Compact 3.5 SP1.
[ @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
Descrizione
0x00
Disattiva la creazione di script dell'agente snapshot e utilizza lo script di creazione dello schema definito in creation_script.
0x01
Genera le istruzioni per la creazione di oggetti (CREATE TABLE, CREATE PROCEDURE e così via). Questo è il valore predefinito per gli articoli di stored procedure.
0x10
Genera un indice cluster corrispondente. Anche se questa opzione non viene impostata, se sono già definiti in una tabella pubblicata, gli indici correlati alle chiavi primarie e i vincoli UNIQUE vengono generati.
0x20
Converte i tipi di dati definiti dall'utente (UDT) in tipi di dati di base nel Sottoscrittore. Questa opzione non può essere utilizzata quando è presente un vincolo CHECK o DEFAULT su una colonna UDT, se una colonna UDT è inclusa nella chiave primaria o se una colonna calcolata fa riferimento a una colonna UDT.
0x40
Genera uno o più indici non cluster corrispondenti. Anche se questa opzione non viene impostata, se sono già definiti in una tabella pubblicata, gli indici correlati alle chiavi primarie e i vincoli UNIQUE vengono generati.
0x80
Replica i vincoli PRIMARY KEY. Vengono inoltre replicati tutti gli indici correlati al vincolo, anche se le opzioni 0x10 e 0x40 non sono attivate.
0x100
Replica i trigger utente su un articolo di tabella, se definiti.
0x200
Replica i vincoli FOREIGN KEY. Se la tabella con riferimenti non fa parte di una pubblicazione, tutti i vincoli FOREIGN KEY in una tabella pubblicata non vengono replicati.
0x400
Replica i vincoli CHECK.
0x800
Replica i valori predefiniti.
0x1000
Replica le regole di confronto a livello di colonna.
0x2000
Replica le proprietà estese associate all'oggetto di origine dell'articolo pubblicato.
0x4000
Replica i vincoli UNIQUE. Vengono inoltre replicati tutti gli indici correlati al vincolo, anche se le opzioni 0x10 e 0x40 non sono attivate.
0x8000
Questa opzione non è valida per i server di pubblicazione che eseguono SQL Server 2005 o versioni successive.
0x10000
Replica i vincoli CHECK come NOT FOR REPLICATION in modo che i vincoli non vengano applicati durante la sincronizzazione.
0x20000
Replica i vincoli FOREIGN KEY come NOT FOR REPLICATION in modo che i vincoli non vengano applicati durante la sincronizzazione.
0x40000
Replica i filegroup associati a una tabella o un indice partizionato.
0x80000
Replica lo schema di partizione per una tabella partizionata.
0x100000
Replica lo schema di partizione per un indice partizionato.
0x200000
Replica le statistiche di tabella.
0x400000
Replica le associazioni predefinite.
0x800000
Replica le associazioni di regole.
0x1000000
Replica l'indice full-text.
0x2000000
Le raccolte di schemi XML associati a colonne xml non vengono replicati.
0x4000000
Replica gli indici su colonne xml.
0x8000000
Crea gli eventuali schemi non ancora presenti nel Sottoscrittore.
0x10000000
Converte le colonne xml in ntext nel Sottoscrittore.
0x20000000
Converte i tipi di dati LOB (Large Object) (nvarchar(max), varchar(max) e varbinary(max)) introdotti in SQL Server 2005 in tipi di dati supportati in SQL Server 2000. Per informazioni sulla modalità di mapping di questi tipi, vedere la sezione relativa al mapping di nuovi tipi di dati per le versioni precedenti in Utilizzo di più versioni di SQL Server in una topologia di replica.
0x40000000
Replica le autorizzazioni.
0x80000000
Esegue un tentativo di rimozione delle dipendenze dagli oggetti che non fanno parte della pubblicazione.
0x100000000
Utilizzare questa opzione per replicare l'attributo FILESTREAM se è specificato nelle colonne varbinary(max). Non specificare questa opzione se si stanno replicando tabelle nei Sottoscrittori SQL Server 2005. La replica di tabelle con colonne FILESTREAM nei Sottoscrittori SQL Server 2000 non è supportata, indipendentemente dall'impostazione di questa opzione dello schema. Vedere l'opzione correlata 0x800000000.
0x200000000
Converte i tipi di dati data/ora (date, time, datetimeoffset e datetime2) introdotti in SQL Server 2008 in tipi di dati supportati nelle versioni precedenti di SQL Server. Per informazioni sulla modalità di mapping di questi tipi, vedere la sezione relativa al mapping di nuovi tipi di dati per le versioni precedenti in Utilizzo di più versioni di SQL Server in una topologia di replica.
0x400000000
Replica l'opzione di compressione per dati e indici. Per ulteriori informazioni, vedere Creazione di tabelle e di indici compressi.
0x800000000
Impostare questa opzione per archiviare i dati FILESTREAM nel relativo filegroup nel Sottoscrittore. Se questa opzione non è impostata, i dati FILESTREAM vengono archiviati nel filegroup predefinito. Tramite la replica non vengono creati filegroup, pertanto, se si imposta questa opzione, è necessario creare il filegroup prima di applicare lo snapshot nel Sottoscrittore. Per ulteriori informazioni su come creare gli oggetti prima di applicare lo snapshot, vedere Esecuzione di script prima e dopo l'applicazione dello snapshot.
Vedere l'opzione correlata 0x100000000.
0x1000000000
Converte i tipi CLR definiti dall'utente in varbinary(max) in modo che le colonne con tipo definito dall'utente possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005.
0x2000000000
Converte il tipo di dati hierarchyid in varbinary(max) in modo che le colonne di tipo hierarchyid possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005. Per ulteriori informazioni su come utilizzare le colonne hierarchyid nelle tabelle replicate, vedere hierarchyid (Transact-SQL).
0x4000000000
Replica gli eventuali indici filtrati sulla tabella. Per ulteriori informazioni sugli indici filtrati, vedere Linee guida per la progettazione di indici filtrati.
0x8000000000
Converte i tipi di dati geography e geometryin varbinary(max) in modo che le colonne di questi tipi possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005.
0x10000000000
Replica gli indici nelle colonne di tipo geography e geometry.
Se è NULL, il sistema genera automaticamente un'opzione di schema valida per l'articolo. Nella Tabella delle opzioni predefinite dello schema riportata nella sezione Osservazioni vengono indicati i valori scelti in base al tipo di articolo. Non tutti i valori schema_option risultano inoltre validi per i vari tipi di replica e di articolo. Nella Tabella delle opzioni di schema valide riportata nella sezione Osservazioni vengono indicate le opzioni supportate per i vari tipi di articolo.
[!NOTA]
Il parametro schema_option influisce esclusivamente sulle opzioni di replica per lo snapshot iniziale. Dopo la generazione dello schema iniziale da parte dell'agente snapshot e la relativa applicazione nel Sottoscrittore, la replica delle modifiche dello schema della pubblicazione nel Sottoscrittore viene eseguita in base alle regole di replica delle modifiche dello schema e all'impostazione del parametro replicate_ddl nella stored procedure sp_addmergepublication. Per ulteriori informazioni, vedere Modifiche allo schema nei database di pubblicazione.
[ @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 logica di 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 logiche di 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'
Abilita e disabilita 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 abilita la gestione automatica degli intervalli di valori Identity, mentre false la disabilita.[!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'
Abilita o disabilita 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 abilita l'utilizzo del sistema di risoluzione interattivo per l'articolo, mentre false lo disabilita.[!NOTA]
Il sistema di risoluzione interattivo non è supportato dai Sottoscrittori SQL Server Compact 3.5 SP1.
[ @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 Compact 3.5 SP1, 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 Compact 3.5 SP1, 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 utilizzato 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 disabilitare 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 MicrosoftSQL 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.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
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 |
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
Autorizzazioni
È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner.
Vedere anche