Articoli transazionali - Rigenerare per riflettere le modifiche dello schemaTransactional Articles - Regenerate to Reflect Schema Changes

Per impostazione predefinita, la replica transazionale apporta tutte le modifiche di dati nei Sottoscrittori tramite stored procedure generate mediante procedure interne per ogni articolo di tabella nella pubblicazione.By default transactional replication makes all data changes at Subscribers through stored procedures that are generated by internal procedures for each table article in the publication. Le tre procedure, rispettivamente per inserimenti, aggiornamenti ed eliminazioni, vengono copiate nel Sottoscrittore ed eseguite in caso di replica di un inserimento, un aggiornamento o un'eliminazione nel Sottoscrittore.The three procedures (one each for inserts, updates, and deletes) are copied to the Subscriber and execute when an insert, update, or delete is replicated to the Subscriber. Quando viene apportata una modifica dello schema a una tabella in un server di pubblicazione SQL ServerSQL Server , queste procedure vengono rigenerate automaticamente dalla replica chiamando lo stesso set di procedure di scripting interne affinché le nuove procedure corrispondano al nuovo schema. La replica di modifiche dello schema non è supportata per i server di pubblicazione Oracle.When a schema change is made to a table on a SQL ServerSQL Server Publisher, replication regenerates these procedures automatically by calling the same set of internal scripting procedures so that the new procedures match the new schema (replication of schema changes is not supported for Oracle Publishers).

È inoltre possibile specificare procedure personalizzate per sostituire una o più procedure predefinite.It is also possible to specify custom procedures to replace one or more of the default procedures. Le procedure personalizzate vanno modificate in caso di modifica dello schema che influisce sulla procedura.The custom procedures should be changed if the schema change will affect the procedure. Ad esempio, se una procedura fa riferimento a una colonna eliminata con una modifica dello schema, occorre rimuovere i riferimenti alla colonna dalla procedura.For example, if a procedure references a column that is dropped in a schema change, references to the column should be removed from the procedure. Per propagare una nuova procedura personalizzata ai Sottoscrittori con la replica sono disponibili due modi.There are two ways for replication to propagate a new custom procedure to Subscribers:

  • La prima opzione consiste nell'utilizzare una procedura di scripting personalizzata per sostituire le impostazioni predefinite utilizzate dalla replica:The first option is to use a custom scripting procedure to replace the defaults used by replication:

    1. Quando si esegue sp_addarticle (Transact-SQL), assicurarsi che il bit 0x02 di @schema_option sia impostato su true.When executing sp_addarticle (Transact-SQL), ensure the @schema_option 0x02 bit is to true.

    2. Eseguire sp_register_custom_scripting (Transact-SQL) e specificare un valore "insert", "update" o "delete" per il parametro @type e il nome della procedura di scripting personalizzata per il parametro @value.Execute sp_register_custom_scripting (Transact-SQL) and specify a value of 'insert', 'update', or 'delete' for the parameter @type and the name of the custom scripting procedure for the parameter @value.

      Alla successiva modifica dello schema, la replica chiama questa stored procedure per inserire nello script la definizione per la nuova stored procedure personalizzata definita dall'utente e quindi propaga la procedura a ogni Sottoscrittore.The next time a schema change is made, replication calls this stored procedure to script out the definition for the new user defined custom stored procedure, and then propagates the procedure to each Subscriber.

  • La seconda opzione consiste nell'utilizzare uno script contenente una nuova definizione di procedura personalizzata:The second option is to use a script that contains a new custom procedure definition:

    1. Quando si esegue sp_addarticle (Transact-SQL), impostare il bit 0x02 di @schema_option su false affinché la replica non generi automaticamente procedure personalizzate nel Sottoscrittore.When executing sp_addarticle (Transact-SQL), set the @schema_option 0x02 bit to false so replication does not automatically generate custom procedures at the Subscriber.

    2. Prima di ogni modifica dello schema, creare un nuovo file script e registrare lo script con la replica eseguendo sp_register_custom_scripting (Transact-SQL).Before each schema change, create a new script file and register the script with replication by executing sp_register_custom_scripting (Transact-SQL). Specificare un valore "custom_script" per il parametro @type e il percorso dello script nel server di pubblicazione per il parametro @value.Specify a value of 'custom_script' for the parameter @type and the path to the script on the Publisher for the parameter @value.

      Alla successiva modifica significativa dello schema, questo script viene eseguito in ogni Sottoscrittore all'interno della stessa transazione del comando DDL.The next time a relevant schema change is made, this script executes on each Subscriber within the same transaction as the DDL command. Dopo che è stata apportata la modifica dello schema, la registrazione dello script viene annullata.After the schema change is made, the script is unregistered. Per consentire l'esecuzione dello script dopo una successiva modifica dello schema, è necessario registrarlo nuovamente.You must re-register the script to have it executed after a subsequent schema change.

Vedere ancheSee Also

Specificare la modalità di propagazione delle modifiche per gli articoli transazionali Specify How Changes Are Propagated for Transactional Articles
Apportare modifiche allo schema nei database di pubblicazione Make Schema Changes on Publication Databases