Share via


Abilitazione delle sottoscrizioni aggiornabili per le pubblicazioni transazionali

Questo argomento descrive come abilitare l'aggiornamento delle sottoscrizioni per le pubblicazioni transazionali in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL.

Nota

Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Prima di iniziare

Sicurezza

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.

Uso di SQL Server Management Studio

Abilitare le sottoscrizioni aggiornabili per le pubblicazioni transazionali nella pagina Tipo di pubblicazione della Creazione guidata nuova pubblicazione. Per altre informazioni sull'uso di questa procedura guidata, vedere Creare una pubblicazione. Dopo aver creato la pubblicazione, non è più possibile attivare le sottoscrizioni aggiornabili.

Per utilizzare le sottoscrizioni aggiornabili, è inoltre necessario configurare le opzioni della Creazione guidata nuova sottoscrizione. Per altre informazioni, vedere Creazione di una sottoscrizione aggiornabile di una pubblicazione transazionale.

Per attivare le sottoscrizioni aggiornabili

  1. Nella pagina Tipo di pubblicazione della Creazione guidata nuova pubblicazione, selezionare Pubblicazione transazionale con sottoscrizioni aggiornabili.

  2. Nella pagina Sicurezza agente , specificare le impostazioni di sicurezza per l'agente di lettura coda, per l'agente snapshot e per l'agente di lettura log. Per ulteriori informazioni sulle autorizzazioni necessarie per l'account con cui viene eseguito l'agente di lettura coda, vedere Replication Agent Security Model.

    Nota

    L'agente di lettura coda viene configurato anche se si utilizzano solo le sottoscrizioni ad aggiornamento immediato.

Uso di Transact-SQL

Quando si crea una pubblicazione transazionale a livello di programmazione utilizzando stored procedure di replica, è possibile abilitare sottoscrizioni ad aggiornamento immediato o in coda.

Per creare una pubblicazione che supporta sottoscrizioni ad aggiornamento immediato

  1. Se necessario, creare un processo dell'agente di lettura log per il database di pubblicazione.

    • Se per il database di pubblicazione esiste già un processo dell'agente di lettura log, procedere con il passaggio 2.

    • Se non si è certi che esista un processo dell'agente di lettura log per un database pubblicato, eseguire sp_helplogreader_agent (Transact-SQL) nel server di pubblicazione nel database di pubblicazione. Se il set di risultati è vuoto, sarà necessario creare un processo dell'agente di lettura log.

    • Nel server di pubblicazione eseguire sp_addlogreader_agent (Transact-SQL). Specificare le credenziali di Microsoft Windows in cui viene eseguito l'agente per @job_name e @password. Se l'agente userà SQL Server Autenticazione durante la connessione al server di pubblicazione, è necessario specificare anche un valore pari a 0 per @publisher_security_mode e le informazioni di accesso di Microsoft SQL Server per @publisher_login e @publisher_password.

  2. Eseguire sp_addpublication (Transact-SQL) specificando un valore true per il parametro @allow_sync_tran.

  3. Nel server di pubblicazione eseguire sp_addpublication_snapshot (Transact-SQL). Specificare il nome della pubblicazione usato nel passaggio 2 per @publication e le credenziali di Windows con cui viene eseguito l'agente snapshot per @job_name e @password. Se l'agente userà SQL Server Autenticazione durante la connessione al server di pubblicazione, è necessario specificare anche un valore pari a 0 per @publisher_security_mode e le informazioni di accesso SQL Server per @publisher_login e @publisher_password. Verrà creato un processo dell'agente snapshot per la pubblicazione.

  4. Aggiungere articoli alla pubblicazione. Per altre informazioni, vedere definire un articolo.

  5. Nel Sottoscrittore creare una sottoscrizione aggiornabile per la pubblicazione. Per altre informazioni, vedere Creazione di una sottoscrizione aggiornabile di una pubblicazione transazionale.

Per creare una pubblicazione che supporta sottoscrizioni ad aggiornamento in coda

  1. Se necessario, creare un processo dell'agente di lettura log per il database di pubblicazione.

    • Se per il database di pubblicazione esiste già un processo dell'agente di lettura log, procedere con il passaggio 2.

    • Se non si è certi che esista un processo dell'agente di lettura log per un database pubblicato, eseguire sp_helplogreader_agent (Transact-SQL) nel server di pubblicazione nel database di pubblicazione. Se il set di risultati è vuoto, sarà necessario creare un processo dell'agente di lettura log.

    • Nel server di pubblicazione eseguire sp_addlogreader_agent (Transact-SQL). Specificare le credenziali di Windows in cui viene eseguito l'agente per @job_name e @password. Se l'agente userà SQL Server Autenticazione durante la connessione al server di pubblicazione, è necessario specificare anche un valore pari a 0 per @publisher_security_mode e le informazioni di accesso SQL Server per @publisher_login e @publisher_password.

  2. Se necessario, creare un processo dell'agente di lettura coda per il server di distribuzione.

    • Se per il database di distribuzione esiste già un processo dell'agente di lettura coda, procedere con il passaggio 3.

    • Se non si è certi che esista un processo dell'agente di lettura coda per il database di distribuzione, eseguire sp_helpqreader_agent (Transact-SQL) nel server di distribuzione nel database di distribuzione. Se il set di risultati è vuoto, sarà necessario creare un processo dell'agente di lettura coda.

    • Nel server di distribuzione eseguire sp_addqreader_agent (Transact-SQL). Specificare le credenziali di Windows in cui viene eseguito l'agente per @job_name e @password. Queste credenziali vengono utilizzate quando l'agente di lettura coda si connette al server di pubblicazione e al Sottoscrittore. Per altre informazioni, vedere Modello di sicurezza dell'agente di replica.

  3. Eseguire sp_addpublication (Transact-SQL) specificando un valore true per il parametro @allow_queued_tran e un valore di pub wins, sub reinit o sub wins per @conflict_policy.

  4. Nel server di pubblicazione eseguire sp_addpublication_snapshot (Transact-SQL). Specificare il nome della pubblicazione usato nel passaggio 3 per @publication e le credenziali di Windows in cui viene eseguita la agente di snapshot per @snapshot_job_name e @password. Se l'agente userà SQL Server Autenticazione durante la connessione al server di pubblicazione, è necessario specificare anche un valore pari a 0 per @publisher_security_mode e le informazioni di accesso SQL Server per @publisher_login e @publisher_password. Verrà creato un processo dell'agente snapshot per la pubblicazione.

  5. Aggiungere articoli alla pubblicazione. Per altre informazioni, vedere definire un articolo.

  6. Nel Sottoscrittore creare una sottoscrizione aggiornabile per la pubblicazione. Per altre informazioni, vedere Creazione di una sottoscrizione aggiornabile di una pubblicazione transazionale.

Per modificare i criteri per la gestione dei conflitti per una pubblicazione che consente le sottoscrizioni ad aggiornamento in coda

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_changepublication (Transact-SQL). Specificare il valore conflict_policy per @property e i criteri desiderati per la gestione dei conflitti pub wins, sub reinito sub wins per @value.

Esempio (Transact-SQL)

In questo esempio viene creata una pubblicazione che supporta le sottoscrizioni pull ad aggiornamento immediato e in coda.

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

--Declarations for adding a transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksProductTran'; 
SET @login = $(Login); 
SET @password = $(Password); 

USE [AdventureWorks]
-- Enable transactional replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a transactional publication that supports immediate updating, 
-- queued updating, and pull subscriptions. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
  -- Explicitly declare the related default properties 
    @conflict_policy = N'pub wins';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product'; 
SET @owner = N'Production'; 

-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2012]
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_table = @article, 
    @vertical_partition = N'false', 
    @type = N'logbased',
    @source_owner = @owner, 
    @destination_owner = @owner;
GO

Vedere anche

Impostazione delle opzioni di risoluzione dei conflitti per l'aggiornamento in coda (SQL Server Management Studio)
Tipi di pubblicazioni per la replica transazionale
Updatable Subscriptions for Transactional Replication
Creare una pubblicazione
Creare una sottoscrizione aggiornabile di una pubblicazione transazionale
Updatable Subscriptions for Transactional Replication
Utilizzo di sqlcmd con variabili di scripting