Condividi tramite


Articoli transazionali - Rigenerare per riflettere le modifiche dello schema

Si applica a: SQL Server Istanza gestita di SQL di Azure

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. 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. Quando viene apportata una modifica dello schema a una tabella in un server di pubblicazione SQL 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.

È inoltre possibile specificare procedure personalizzate per sostituire una o più procedure predefinite. Le procedure personalizzate vanno modificate in caso di modifica dello schema che influisce 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. Per propagare una nuova procedura personalizzata ai Sottoscrittori con la replica sono disponibili due modi.

  • La prima opzione consiste nell'utilizzare una procedura di scripting personalizzata per sostituire le impostazioni predefinite utilizzate dalla replica:

    1. Quando si esegue sp_addarticle (Transact-SQL), assicurarsi che il bit 0x02 di @schema_option sia impostato su 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.

    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'utilizzare uno script contenente una nuova definizione di procedura personalizzata:

    1. Quando esegui sp_addarticle (Transact-SQL), imposta 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 script e registrare lo script con la replica eseguendo 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.

    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. Per consentire l'esecuzione dello script dopo una successiva modifica dello schema, è necessario registrarlo nuovamente.