Impostazione del metodo di propagazione per le modifiche ai dati negli articoli transazionaliSet the Propagation Method for Data Changes to Transactional Articles

In questo argomento viene descritto come impostare il metodo di propagazione per le modifiche ai dati negli articoli transazionali in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to set the propagation method for data changes to transactional articles in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Per impostazione predefinita, la replica transazionale propaga le modifiche ai Sottoscrittori tramite un set di stored procedure per ogni articolo.By default, transactional replication propagates changes to Subscribers using a set of stored procedures for each article. È possibile sostituire tali procedure con procedure personalizzate.You can replace these procedures with custom procedures. Per altre informazioni, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information, see Specify How Changes Are Propagated for Transactional Articles.

Contenuto dell'argomentoIn This Topic

Prima di iniziareBefore You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • È consigliabile prestare particolare attenzione quando si modificano i file di snapshot generati dalla replica.Care must be taken when editing any of the snapshot files generated by replication. È necessario testare e supportare la logica personalizzata nelle stored procedure personalizzate.You must test and support custom logic in the custom stored procedures. MicrosoftMicrosoft non fornisce supporto per la logica personalizzata. does not provide support for custom logic.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Specificare il metodo di propagazione nella scheda Proprietà della finestra di dialogo Proprietà articolo- <Articolo>, disponibile nella Creazione guidata nuova pubblicazione e nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Specify the propagation method on the Properties tab of the Article Properties - <Article> dialog box, which is available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. Per altre informazioni sull'uso della creazione guidata e l'accesso alla finestra di dialogo, vedere Creare una pubblicazione e Visualizzare e modificare le proprietà della pubblicazione.For more information about using the wizard and accessing the dialog box, see Create a Publication and View and Modify Publication Properties.

Per specificare il metodo di propagazioneTo specify the propagation method

  1. Nella pagina Articoli della Creazione guidata nuova pubblicazione o nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare una tabella e quindi fare clic su Proprietà articolo.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. Fare clic su Imposta proprietà dell'articolo tabella evidenziato.Click Set Properties of Highlighted Table Article.

  3. Nella scheda Proprietà della finestra di dialogo Proprietà articolo - <Articolo>, all'interno della sezione Recapito istruzione, specificare il metodo di propagazione per ogni operazione usando i menu Formato recapito INSERT, Formato recapito UPDATE e Formato recapito DELETE.On the Properties tab of the Article Properties - <Article> dialog box, in the Statement Delivery section, specify the propagation method for each operation using the INSERT delivery format, UPDATE delivery format, and DELETE delivery format menus.

  4. Fare clic su OK.Click OK.

  5. Se è visualizzata la finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su OK per salvare e chiudere la finestra di dialogo.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Per generare e utilizzare stored procedure personalizzateTo generate and use custom stored procedures

  1. Nella pagina Articoli della Creazione guidata nuova pubblicazione o nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare una tabella e quindi fare clic su Proprietà articolo.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. Fare clic su Imposta proprietà dell'articolo tabella evidenziato.Click Set Properties of Highlighted Table Article.

    Nella scheda Proprietà della finestra di dialogo Proprietà articolo - <Articolo>, all'interno della sezione Recapito istruzione, selezionare la sintassi CALL dal menu del formato di recapito appropriato (Formato recapito INSERT, Formato recapito UPDATE o Formato recapito DELETE) e digitare il nome della stored procedure da usare in Stored procedure INSERT, Stored procedure DELETE o Stored procedure UPDATE.On the Properties tab of the Article Properties - <Article> dialog box, in the Statement Delivery section, select the CALL syntax from the appropriate delivery format menu (INSERT delivery format, UPDATE delivery format, or DELETE delivery format), and then type the name of the procedure to use in INSERT stored procedure, DELETE stored procedure, or UPDATE stored procedure. Per altre informazioni sulla sintassi CALL, vedere la sezione "Sintassi di chiamata per le stored procedure" in Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information about CALL syntax, see the section "Call syntax for stored procedures" in Specify How Changes Are Propagated for Transactional Articles.

  3. Fare clic su OK.Click OK.

  4. Se è visualizzata la finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su OK per salvare e chiudere la finestra di dialogo.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

  5. Quando lo snapshot per la pubblicazione viene generato, esso include la procedura specificata nel passaggio precedente.When the snapshot for the publication is generated, it will include the procedure you specified in the previous step. Le procedure utilizzeranno la sintassi CALL specificata, ma includeranno la logica predefinita utilizzata dalla replica.The procedures will use the CALL syntax you specified, but will include the default logic that replication uses.

    Dopo la generazione dello snapshot, passare alla cartella snapshot per la pubblicazione cui appartiene questo articolo e individuare il file con estensione sch che presenta lo stesso nome dell'articolo.After the snapshot has been generated, navigate to the snapshot folder for the publication to which this article belongs and locate the .sch file with the same name as the article. Aprire il file mediante Blocco note o un altro editor di testo, individuare il comando CREATE PROCEDURE per le stored procedure di inserimento, aggiornamento o eliminazione, quindi modificare la definizione della procedura in modo da fornire qualsiasi logica personalizzata per la propagazione delle modifiche ai dati.Open this file using Notepad or another text editor, locate the CREATE PROCEDURE command for the insert, update, or delete stored procedures, and edit the procedure definition to supply any custom logic for propagating data changes. Se lo snapshot viene rigenerato, è necessario ricreare la stored procedura personalizzata.If the snapshot is regenerated, you must re-create the custom procedure.

Utilizzo di Transact-SQL Using Transact-SQL

La replica transazionale consente di controllare la modalità con cui le modifiche vengono propagate dal server di pubblicazione ai Sottoscrittori. Questo metodo di propagazione può inoltre essere impostato a livello di programmazione quando un articolo viene creato e in seguito modificato tramite le stored procedure di replica.Transactional replication enables you to control how changes are propagated from the Publisher to Subscribers, and this propagation method can be set programmatically when an article is created and changed later using replication stored procedures.

Nota

È possibile specificare un metodo di propagazione diverso per ogni tipo di operazione DML (Data Manipulation Language), ovvero inserimento, aggiornamento o eliminazione, che si verifica in una riga di dati pubblicati.You can specify a different propagation method for each type of DML (data manipulation language) operation (insert, update, or delete) that occurs on a row of a published data.

Per altre informazioni, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information, see Specify How Changes Are Propagated for Transactional Articles.

Per creare un articolo che utilizza comandi Transact-SQL per propagare le modifiche ai datiTo create an article that uses Transact-SQL commands to propagate data changes

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute sp_addarticle. Specificare il nome della pubblicazione cui appartiene l'articolo per @publication, il nome dell'articolo per @article, l'oggetto di database da pubblicare per @source_objecte il valore SQL per almeno uno dei parametri seguenti:Specify the name of the publication to which the article belongs for @publication, a name for the article for @article, the database object being published for @source_object, and a value of SQL for at least one of the following parameters:

    • @ins_cmd : controlla la replica dei comandi INSERT .@ins_cmd - controls the replication of INSERT commands.

    • @upd_cmd : controlla la replica dei comandi UPDATE .@upd_cmd - controls the replication of UPDATE commands.

    • @del_cmd : controlla la replica dei comandi DELETE .@del_cmd - controls the replication of DELETE commands.

    Nota

    Quando si specifica il valore SQL per uno dei parametri indicati in precedenza, i comandi di tale tipo verranno replicati nel Sottoscrittore come comandi Transact-SQLTransact-SQL appropriati.When specifying a value of SQL for any of the above parameters, commands of that type will be replicated to the Subscriber as the appropriate Transact-SQLTransact-SQL command.

    Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

Per creare un articolo che non propaga le modifiche ai datiTo create an article that does not propagate data changes

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute sp_addarticle. Specificare il nome della pubblicazione cui appartiene l'articolo per @publication, il nome dell'articolo per @article, l'oggetto di database da pubblicare per @source_objecte il valore NONE per almeno uno dei parametri seguenti:Specify the name of the publication to which the article belongs for @publication, a name for the article for @article, the database object being published for @source_object, and a value of NONE for at least one of the following parameters:

    • @ins_cmd : controlla la replica dei comandi INSERT .@ins_cmd - controls the replication of INSERT commands.

    • @upd_cmd : controlla la replica dei comandi UPDATE .@upd_cmd - controls the replication of UPDATE commands.

    • @del_cmd : controlla la replica dei comandi DELETE .@del_cmd - controls the replication of DELETE commands.

    Nota

    Quando si specifica il valore NONE per uno dei parametri indicati in precedenza, i comandi di tale tipo non verranno replicati nel Sottoscrittore.When specifying a value of NONE for any of the above parameters, commands of that type will not be replicated to the Subscriber.

    Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

Per creare un articolo con stored procedure personalizzate modificate dall'utenteTo create an article with user-modified custom stored procedures

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute sp_addarticle. Specificare il nome della pubblicazione cui appartiene l'articolo per @publication, il nome dell'articolo per @article, l'oggetto di database da pubblicare per @source_object, un valore per la maschera di bit @schema_option che contiene il valore 0x02 (consente la generazione automatica di stored procedure personalizzate) e almeno uno dei parametri seguenti:Specify the name of the publication to which the article belongs for @publication, a name for the article for @article, the database object being published for @source_object, a value for the @schema_option bitmask that contains the value 0x02 (enables automatic generation of custom stored procedures), and at least one of the following parameters:

    • @ins_cmd - specificare il valore CALL sp_MSins_*nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@ins_cmd - specify a value of CALL sp_MSins_*article_name, where ***article_name** is the value specified for @article.

    • @del_cmd - specificare il valore CALL sp_MSdel_*nome_articolo* o XCALL sp_MSdel_*nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@del_cmd - specify a value of CALL sp_MSdel_*article_name* or XCALL sp_MSdel_*article_name, where ***article_name** is the value specified for @article.

    • @upd_cmd - specificare il valore SCALL sp_MSupd_*nome_articolo, **CALL sp_MSupd_nome_articolo, *XCALL sp_MSupd_nome_articolo *o **MCALL sp_MSupd_nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@upd_cmd - specify a value of SCALL sp_MSupd_*article_name, **CALL sp_MSupd_article_name, *XCALL sp_MSupd_*article_name, or **MCALL sp_MSupd_article_name, where **article_name* is the value specified for @article.

    Nota

    Per ognuno dei parametri di comando indicati in precedenza, è possibile specificare il nome desiderato per le stored procedure generate dalla replica.For each of the above command parameters, you can specify your own name for the stored procedures that replication generates.

    Nota

    Per altre informazioni sulla sintassi CALL, SCALL, XCALL e MCALL, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information on CALL, SCALL, XCALL, and MCALL syntax, see Specify How Changes Are Propagated for Transactional Articles.

    Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

  2. Dopo la generazione dello snapshot, passare alla cartella snapshot per la pubblicazione cui appartiene questo articolo e individuare il file con estensione sch che presenta lo stesso nome dell'articolo.After the snapshot has been generated, navigate to the snapshot folder for the publication to which this article belongs and locate the .sch file with the same name as the article. Aprire il file mediante Notepad.exe, individuare il comando CREATE PROCEDURE per le stored procedure di inserimento, aggiornamento o eliminazione e modificare la definizione della procedura per specificare la logica personalizzata per la propagazione delle modifiche ai dati.Open this file using Notepad.exe, locate the CREATE PROCEDURE command for the insert, update, or delete stored procedures, and edit the procedure definition to supply any custom logic for propagating data changes. Per altre informazioni, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information, see Specify How Changes Are Propagated for Transactional Articles.

Per creare un articolo con scripting personalizzato nelle stored procedure personalizzate per propagare le modifiche ai datiTo create an article with custom scripting in the custom stored procedures to propagate data changes

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute sp_addarticle. Specificare il nome della pubblicazione cui appartiene l'articolo per @publication, il nome dell'articolo per @article, l'oggetto di database da pubblicare per @source_object, un valore per la maschera di bit @schema_option che contiene il valore 0x02 (consente la generazione automatica di stored procedure personalizzate) e almeno uno dei parametri seguenti:Specify the name of the publication to which the article belongs for @publication, a name for the article for @article, the database object being published for @source_object, a value for the @schema_option bitmask that contains the value 0x02 (enables automatic generation of custom stored procedures), and at least one of the following parameters:

    • @ins_cmd - specificare il valore CALL sp_MSins_*nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@ins_cmd - specify a value of CALL sp_MSins_*article_name, where ***article_name** is the value specified for @article.

    • @del_cmd - specificare il valore CALL sp_MSdel_*nome_articolo* o XCALL sp_MSdel_*nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@del_cmd - specify a value of CALL sp_MSdel_*article_name* or XCALL sp_MSdel_*article_name, where ***article_name** is the value specified for @article.

    • @upd_cmd - specificare il valore SCALL sp_MSupd_*nome_articolo, **CALL sp_MSupd_nome_articolo, *XCALL sp_MSupd_nome_articolo *o **MCALL sp_MSupd_nome_articolo, dove ***nome_articolo** è il valore specificato per @article.@upd_cmd - specify a value of SCALL sp_MSupd_*article_name, **CALL sp_MSupd_article_name, *XCALL sp_MSupd_*article_name, **MCALL sp_MSupd_article_name, where **article_name* is the value specified for @article.

    Nota

    Per ognuno dei parametri di comando indicati in precedenza, è possibile specificare il nome desiderato per le stored procedure generate dalla replica.For each of the above command parameters, you can specify your own name for the stored procedures that replication generates.

    Nota

    Per altre informazioni sulla sintassi CALL, SCALL, XCALL e MCALL, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information on CALL, SCALL, XCALL, and MCALL syntax, see Specify How Changes Are Propagated for Transactional Articles.

    Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

  2. Nel database di pubblicazione del server di pubblicazione utilizzare l'istruzione ALTER PROCEDURE per modificare sp_scriptpublicationcustomprocs in modo che restituisca uno script CREATE PROCEDURE per le stored procedure personalizzate di inserimento, aggiornamento ed eliminazione.At the Publisher on the publication database, use the ALTER PROCEDURE statement to edit sp_scriptpublicationcustomprocs so that it returns a CREATE PROCEDURE script for the insert, update, and delete custom stored procedures. Per altre informazioni, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information, see Specify How Changes Are Propagated for Transactional Articles.

Per modificare il metodo di propagazione delle modifiche per un articolo esistenteTo change the method of propagating changes for an existing article

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_changearticle.At the Publisher on the publication database, execute sp_changearticle. Specificare @publication, @article, il valore ins_cmd, upd_cmdo del_cmd per @propertye il metodo di propagazione appropriato per @value.Specify @publication, @article, a value of ins_cmd, upd_cmd, or del_cmd for @property, and the appropriate propagation method for @value.

  2. Ripetere il passaggio 1 per ogni metodo di propagazione da modificare.Repeat step 1 for each propagation method to be changed.

Vedere ancheSee Also

Specificare la modalità di propagazione delle modifiche per gli articoli transazionali Specify How Changes Are Propagated for Transactional Articles
Creare, modificare ed eliminare pubblicazioni e articoli (replica)Create, Modify, and Delete Publications and Articles (Replication)