Condividi tramite


Rigenerare procedure transazionali personalizzate per riflettere le modifiche dello schema

Per impostazione predefinita, la replica transazionale apporta tutte le variazioni ai dati nei Sottoscrittori tramite stored procedure generate da procedure interne specifiche per ogni articolo della tabella della pubblicazione. Le tre procedure ,una per inserimenti, aggiornamenti ed eliminazioni, vengono copiate nel Sottoscrittore ed eseguite quando un'operazione di inserimento, aggiornamento o eliminazione viene replicata nel Sottoscrittore. Quando viene apportata una modifica dello schema a una tabella in un server di pubblicazione di SQL Server, la replica rigenera automaticamente queste procedure chiamando lo stesso set di routine di scripting interne in modo che le nuove procedure corrispondano al nuovo schema (la replica delle modifiche dello schema non è supportata per i server di pubblicazione Oracle).

È anche possibile specificare procedure personalizzate per sostituire una o più delle procedure predefinite. Le procedure personalizzate devono essere modificate se la modifica dello schema influirà sulla procedura. Ad esempio, se una procedura fa riferimento a una colonna eliminata con una modifica dello schema, occorre rimuovere i riferimenti alla colonna dalla procedura. Ci sono due modi in cui la replica può propagare una nuova procedura personalizzata ai Sottoscrittori.

  • La prima opzione consiste nell'usare una routine di scripting personalizzata per sostituire le impostazioni predefinite usate dalla replica:

    1. Quando si esegue sp_addarticle (Transact-SQL), assicurarsi che il bit 0x02 di @schema_option sia true.

    2. Eseguire sp_register_custom_scripting (Transact-SQL) e specificare il valore 'insert', 'update' o 'delete' per il parametro @type e il nome della routine di scripting personalizzata per il parametro @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.

  • La seconda opzione consiste nell'usare uno script che contiene una nuova definizione di routine personalizzata:

    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.

    2. Prima di ogni modifica dello schema, creare un nuovo file di script e registrare lo script con la replica eseguendo sp_register_custom_scripting (Transact-SQL). Specificare il valore 'custom_script' per il parametro @type e il percorso dello script nel server di pubblicazione per il parametro @value.

    Alla successiva modifica significativa dello schema, questo script viene eseguito in ogni Sottoscrittore all'interno della stessa transazione del comando DDL. Dopo che è stata apportata la modifica dello schema, la registrazione dello script viene annullata. È necessario registrare nuovamente lo script per eseguirlo dopo una successiva modifica dello schema.

Vedere anche

Specificare la modalità di propagazione delle modifiche per gli articoli transazionali
Apportare modifiche allo schema nei database di pubblicazione