Condividi tramite


Creare una sottoscrizione aggiornabile a una pubblicazione transazionale (Management Studio)

Annotazioni

Questa funzionalità verrà rimossa in una versione futura 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.

La replicazione transazionale consente di propagare le modifiche apportate in un Sottoscrittore all'Editore utilizzando sottoscrizioni con aggiornamento immediato o in coda. È possibile creare programmaticamente un programma di sottoscrizione ad aggiornamento usando le stored procedure di replicazione.

Configurare sottoscrizioni aggiornabili nella pagina Sottoscrizioni aggiornabili della Creazione guidata di nuova sottoscrizione. Questa pagina è disponibile solo se avete abilitato una pubblicazione transazionale per le sottoscrizioni aggiornabili. Per altre informazioni sull'abilitazione di sottoscrizioni aggiornabili, vedere Abilitare le sottoscrizioni aggiornabili per le pubblicazioni transazionali.

Configurare una sottoscrizione aggiornabile dal server di pubblicazione

  1. Connettersi al server di pubblicazione in Microsoft SQL Server Management Studio e quindi espandere il nodo del server.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  3. Fare clic con il pulsante destro del mouse su una pubblicazione transazionale abilitata per aggiornare le sottoscrizioni e quindi scegliere Nuove sottoscrizioni.

  4. Seguire le pagine della procedura guidata per specificare le opzioni per la sottoscrizione, ad esempio la posizione in cui deve essere eseguito l'agente di distribuzione.

  5. Nella pagina Sottoscrizioni aggiornabili della Creazione guidata nuova sottoscrizione verificare che l'opzione Replica sia selezionata.

  6. Selezionare un'opzione dall'elenco a discesa Commit in Publisher :

    • Per usare sottoscrizioni ad aggiornamento immediato, selezionare Committare simultaneamente le modifiche. Se si seleziona questa opzione e la pubblicazione permette di aggiornare le sottoscrizioni in coda (impostazione predefinita per quelle create con la Creazione guidata nuova pubblicazione), la proprietà della sottoscrizione update_mode viene impostata su failover. Questa modalità consente di passare all'aggiornamento in coda in un secondo momento, se necessario.
    • Per usare le sottoscrizioni ad aggiornamento in coda, selezionare Accoda modifiche ed eseguirne il commit quando possibile. Se si seleziona questa opzione e la pubblicazione consente sottoscrizioni ad aggiornamento immediato (impostazione predefinita per le pubblicazioni create con la Creazione guidata nuova pubblicazione) e il Sottoscrittore esegue SQL Server 2005 o una versione successiva, la proprietà della sottoscrizione update_mode è impostata su failover in coda. Questa modalità consente di passare all'aggiornamento immediato in un secondo momento, se necessario.

    Per informazioni sul cambio delle modalità di aggiornamento, vedere Passare da una modalità di aggiornamento all'altra per una sottoscrizione transazionale aggiornabile.

  7. La pagina di login per sottoscrizioni aggiornabili viene visualizzata per le sottoscrizioni che usano l'aggiornamento immediato o hanno update_mode impostato su accodamento failover. Nella pagina Accesso per sottoscrizioni aggiornabili, specificare un server collegato su cui vengono stabilite le connessioni al server di pubblicazione per le sottoscrizioni aggiornabili immediatamente. Le connessioni vengono usate dai trigger che vengono attivati nel Sottoscrittore e propagano le modifiche al server di pubblicazione. Selezionare una delle opzioni seguenti:

    • Creare un server collegato che si connette usando l'autenticazione di SQL Server. Selezionare questa opzione se non è stato definito un server remoto o un server collegato tra il Sottoscrittore e il server di pubblicazione. La replica crea un server collegato per te. È necessario che l'account specificato esista già nel server di pubblicazione.
    • Usare un server collegato o un server remoto già definito. Selezionare questa opzione se è stato definito un server remoto o un server collegato tra il Sottoscrittore e il server di pubblicazione tramite sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio o un altro metodo.

    Per informazioni sulle autorizzazioni necessarie per l'account del server collegato, vedere le sottoscrizioni ad aggiornamento in coda di immettere qui la descrizione del collegamento.

  8. Completare la procedura guidata.

Configurare una sottoscrizione aggiornabile dal Sottoscrittore

  1. Connettersi al Sottoscrittore in SQL Server Management Studio e quindi espandere il nodo del server.

  2. Espandere la cartella Replica .

  3. Fare clic con il pulsante destro del mouse sulla cartella Sottoscrizioni locali e quindi scegliere Nuove sottoscrizioni.

  4. Nella pagina Pubblicazione della Creazione guidata nuova sottoscrizione, selezionare Trova Publisher SQL Server dall'elenco a discesa Publisher.

  5. Connettersi al server di pubblicazione nella finestra di dialogo Connetti al server .

  6. Selezionare una pubblicazione transazionale abilitata per l'aggiornamento delle sottoscrizioni nella pagina Pubblicazione .

  7. Segui le pagine della procedura guidata per specificare le opzioni per l'abbonamento, ad esempio dove deve operare l'agente di distribuzione.

  8. Nella pagina Sottoscrizioni aggiornabili della Creazione guidata nuova sottoscrizione verificare che l'opzione Replica sia selezionata.

  9. Selezionare un'opzione dall'elenco a discesa Commit in Publisher :

    • Per utilizzare abbonamenti con aggiornamenti immediati, selezionare Applica modifiche simultaneamente. Se si seleziona questa opzione e la pubblicazione consente abbonamenti ad aggiornamenti in coda (impostazione predefinita per le pubblicazioni create con la Creazione guidata nuova pubblicazione), la proprietà dell'abbonamento update_mode è impostata su failover. Questa modalità consente di passare all'aggiornamento in coda in un secondo momento, se necessario.
    • Per usare le sottoscrizioni ad aggiornamento in coda, selezionare Accoda modifiche ed eseguirne il commit quando possibile. Se si seleziona questa opzione e la pubblicazione consente sottoscrizioni che consentono un aggiornamento immediato (impostazione predefinita per le pubblicazioni create con la procedura guidata Nuova Pubblicazione) e il Sottoscrittore esegue SQL Server 2005 o una versione successiva, la proprietà della sottoscrizione update_mode è impostata su 'failover in coda'. Questa modalità consente di passare all'aggiornamento immediato in un secondo momento, se necessario.

    Per informazioni sul cambio delle modalità di aggiornamento, vedere Passare da una modalità di aggiornamento all'altra per una sottoscrizione transazionale aggiornabile.

  10. La pagina di accesso per sottoscrizioni aggiornabili viene visualizzata per le sottoscrizioni che usano l'aggiornamento immediato o quelle con update_mode impostato su failover in coda. Nella pagina Accesso per sottoscrizioni aggiornabili, specificare un server collegato tramite cui vengono effettuate le connessioni al server di pubblicazione per le sottoscrizioni aggiornabili immediatamente. Le connessioni vengono usate dai trigger che vengono attivati nel Sottoscrittore e propagano le modifiche al server di pubblicazione. Selezionare una delle opzioni seguenti:

    • Creare un server collegato che si connette usando l'autenticazione di SQL Server. Selezionare questa opzione se non è stato definito un server remoto o un server collegato tra il Sottoscrittore e il server di pubblicazione. La replica crea automaticamente un server collegato per te. È necessario che l'account specificato esista già nel server di pubblicazione.
    • Usare un server collegato o un server remoto già definito. Selezionare questa opzione se è stato definito un server remoto o un server collegato tra il Sottoscrittore e il server di pubblicazione tramite sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio o un altro metodo.

    Per informazioni sulle autorizzazioni necessarie per l'account del server collegato, vedere le sottoscrizioni di aggiornamento in coda nella sezione inserire qui la descrizione del link.

  11. Completare la procedura guidata.

Creare una sottoscrizione pull ad aggiornamento immediato

  1. Dall'editore, verificare che la pubblicazione supporti le sottoscrizioni ad aggiornamento immediato eseguendo sp_helppublication.

    • Se il valore di allow_sync_tran nel set di risultati è 1, la pubblicazione supporta sottoscrizioni di aggiornamento immediato.
    • Se il valore di allow_sync_tran nel set di risultati è 0, la pubblicazione deve essere ricreata con abbonamenti ad aggiornamento immediato attivati.
  2. Nel server di pubblicazione verificare che la pubblicazione supporti le sottoscrizioni pull eseguendo sp_helppublication.

    • Se il valore di allow_pull nel set di risultati è 1, la pubblicazione supporta le sottoscrizioni pull.
    • Se il valore di allow_pull è 0, eseguire sp_changepublication, specificando allow_pull per @property e true per @value.
  3. Nel Sottoscrittore eseguire sp_addpullsubscription. Specificare @publisher e e @publicationuno dei valori seguenti per @update_mode:

    • sync tran : abilita la sottoscrizione per l'aggiornamento immediato.
    • failover - abilita la sottoscrizione per l'aggiornamento immediato con l'aggiornamento in coda come opzione di failover.

    Annotazioni

failover richiede che la pubblicazione sia abilitata anche per le sottoscrizioni con aggiornamento in coda.

  1. Nel Sottoscrittore eseguire sp_addpullsubscription_agent. Specificare quanto segue:

    • Parametri @publisher, @publisher_dbe @publication .
    • Credenziali di Microsoft Windows con cui viene eseguito l'agente di distribuzione nel Sottoscrittore per @job_login e @job_password.

    Annotazioni

Le connessioni effettuate con l'autenticazione integrata di Windows vengono sempre effettuate usando le credenziali di Windows specificate da @job_login e @job_password. L'agente di distribuzione effettua sempre la connessione locale al Sottoscrittore usando l'autenticazione integrata di Windows. Per impostazione predefinita, l'agente si connette al server di distribuzione usando l'autenticazione integrata di Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the Microsoft SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription. 
  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_link_publication. Specificare @publisher, @publication, il nome del database di pubblicazione per @publisher_dbe uno dei valori seguenti per @security_mode:

    • 0 - Usare l'autenticazione di SQL Server durante l'esecuzione di aggiornamenti nel server di pubblicazione. Questa opzione richiede di specificare un account di accesso valido nel server di pubblicazione per @login e @password.
    • 1 - Usare il contesto di sicurezza dell'utente che apporta modifiche nel Sottoscrittore quando si connette all'Editore. Per informazioni sulle restrizioni correlate a questa modalità di sicurezza, vedere sp_link_publication .
    • 2 - Usare un login per un server collegato esistente definito dall'utente creato con sp_addlinkedserver.
  2. Nel server di pubblicazione eseguire sp_addsubscription specificando @publication, @subscriber, @destination_db, un valore pull per @subscription_typee lo stesso valore specificato nel passaggio 3 per @update_mode.

In questo modo viene registrata la sottoscrizione pull presso l'editore.

Creare una sottoscrizione push ad aggiornamento immediato

  1. Nel Publisher verificare che la pubblicazione supporti le sottoscrizioni ad aggiornamento immediato eseguendo sp_helppublication.

    • Se il valore nei risultati di allow_sync_tran è 1, la pubblicazione supporta subito l'aggiornamento delle sottoscrizioni.
    • Se il valore di allow_sync_tran nel set di risultati è 0, la pubblicazione deve essere ricreata con sottoscrizioni abilitate ad aggiornamento immediato.
  2. Nel server di pubblicazione verificare che la pubblicazione supporti le sottoscrizioni push eseguendo sp_helppublication.

    • Se il valore di allow_push nel set di risultati è 1, la pubblicazione supporta le sottoscrizioni push.
    • Se il valore di allow_push è 0, eseguire sp_changepublication, specificando allow_push per @property e true per @value.
  3. Nel server di pubblicazione eseguire sp_addsubscription. Specificare @publication, @subscriber, @destination_dbe uno dei valori seguenti per @update_mode:

    • sync tran - abilita il supporto per l'aggiornamento immediato.
    • failover : abilita il supporto per l'aggiornamento immediato con l'aggiornamento in coda come opzione di failover.

    Annotazioni

failover richiede che la pubblicazione sia abilitata anche per le sottoscrizioni ad aggiornamento in coda.

  1. Nel server di pubblicazione eseguire il comando sp_addpushsubscription_agent. Specificare i parametri seguenti:

    • @subscriber, @subscriber_dbe @publication.
    • Credenziali di Windows in cui viene eseguito l'agente di distribuzione nel server di distribuzione per @job_login e @job_password.

    Annotazioni

Le connessioni effettuate con l'autenticazione integrata di Windows vengono sempre effettuate usando le credenziali di Windows specificate da @job_login e @job_password. L'agente di distribuzione effettua sempre la connessione locale al server di distribuzione usando l'autenticazione integrata di Windows. Per impostazione predefinita, l'agente si connetterà al Sottoscrittore usando l'autenticazione integrata di Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.
  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_link_publication. Specificare @publisher, @publication, il nome del database di pubblicazione per @publisher_dbe uno dei valori seguenti per @security_mode:

    • 0 - Usare l'autenticazione di SQL Server durante l'esecuzione di aggiornamenti nel server di pubblicazione. Questa opzione richiede di specificare un account di accesso valido nel server di pubblicazione per @login e @password.
    • 1 - Utilizzare il contesto di sicurezza dell'utente che apporta modifiche al Sottoscrittore quando si connette all'Editore. Per informazioni sulle restrizioni correlate a questa modalità di sicurezza, vedere sp_link_publication .
    • 2 - Utilizzare un login al server collegato già definito dall'utente e creato con sp_addlinkedserver.

Creare una sottoscrizione pull ad aggiornamento in coda

  1. Dal Publisher, verificare che la pubblicazione supporti le sottoscrizioni di aggiornamento in coda eseguendo sp_helppublication.

    • Se il valore di allow_queued_tran nel set di risultati è 1, la pubblicazione supporta sottoscrizioni ad aggiornamento immediato.
    • Se il valore di allow_queued_tran nel set di risultati è 0, la pubblicazione deve essere ricreata con sottoscrizioni abilitate per l'aggiornamento in coda.
  2. Nel server di pubblicazione verificare che la pubblicazione supporti le sottoscrizioni pull eseguendo sp_helppublication.

    • Se il valore di nel set di allow_pull risultati è 1, la pubblicazione supporta le sottoscrizioni pull.
    • Se il valore di allow_pull è 0, eseguire sp_changepublication, specificando allow_pull per @property e true per @value.
  3. Nel Sottoscrittore eseguire sp_addpullsubscription. Specificare @publisher e e @publicationuno dei valori seguenti per @update_mode:

    • queued tran : abilita la sottoscrizione per l'aggiornamento in coda.
    • queued failover : abilita il supporto per l'aggiornamento in coda con aggiornamento immediato come opzione di failover.

    Annotazioni

queued failover richiede che la pubblicazione sia abilitata anche per le sottoscrizioni ad aggiornamento immediato. Per eseguire il failover all'aggiornamento immediato, è necessario usare sp_link_publication per definire le credenziali in base alle quali le modifiche nel Sottoscrittore vengono replicate all'Editore.

  1. Nel Sottoscrittore eseguire sp_addpullsubscription_agent. Specificare i parametri seguenti:

    • @publisher, @publisher_dbe @publication.
    • Credenziali di Windows con cui viene eseguito l'agente di distribuzione sul Sottoscrittore per @job_login e @job_password.

    Annotazioni

Le connessioni effettuate con l'autenticazione integrata di Windows vengono sempre effettuate usando le credenziali di Windows specificate da @job_login e @job_password. L'agente di distribuzione effettua sempre la connessione locale al Sottoscrittore usando l'autenticazione integrata di Windows. Per impostazione predefinita, l'agente si connette al server di distribuzione usando l'autenticazione integrata di Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription.
  1. Nel server di pubblicazione eseguire sp_addsubscriber per registrare il Sottoscrittore nel server di pubblicazione, specificando @publication, @subscriber, @destination_db, un valore pull per @subscription_typee lo stesso valore specificato nel passaggio 3 per @update_mode.

In questo modo viene registrata la sottoscrizione pull nel server di pubblicazione.

Per creare una sottoscrizione push ad aggiornamento in coda

  1. Al server di pubblicazione, verificare se la pubblicazione supporta le sottoscrizioni ad aggiornamento in coda eseguendo sp_helppublication.

    • Se il valore di allow_queued_tran nel set di risultati è 1, la pubblicazione supporta sottoscrizioni ad aggiornamento immediato.
    • Se il valore di allow_queued_tran nel set di risultati è 0, la pubblicazione deve essere ricreata con le sottoscrizioni ad aggiornamento in coda abilitate. Per ulteriori informazioni, vedere Come fare: Abilitare le sottoscrizioni aggiornabili per le pubblicazioni transazionali (Programmazione di replica Transact-SQL).
  2. Nel server di pubblicazione verificare che la pubblicazione supporti le sottoscrizioni push eseguendo sp_helppublication.

    • Se il valore di allow_push nel set di risultati è 1, la pubblicazione supporta sottoscrizioni push.
    • Se il valore di allow_push è 0, eseguire sp_changepublication, specificando allow_push per @property e true per @value.
  3. Nel server di pubblicazione eseguire sp_addsubscription. Specificare @publication, @subscriber, @destination_dbe uno dei valori seguenti per @update_mode:

    • queued tran - abilita l'abbonamento per l'aggiornamento in coda.
    • queued failover : abilita il supporto per l'aggiornamento in coda con aggiornamento immediato come opzione di failover.

    Annotazioni

L'opzione di failover in coda richiede che la pubblicazione sia abilitata anche per le sottoscrizioni ad aggiornamento immediato. Per eseguire il failover all'aggiornamento immediato, è necessario usare sp_link_publication per definire le credenziali in base alle quali le modifiche nel Sottoscrittore vengono replicate nell'Editore.

  1. Nel server di pubblicazione eseguire sp_addpushsubscription_agent. Specificare i parametri seguenti:

    • @subscriber, @subscriber_dbe @publication.
    • Credenziali di Windows in cui viene eseguito l'agente di distribuzione nel server di distribuzione per @job_login e @job_password.

    Annotazioni

Le connessioni effettuate con l'autenticazione integrata di Windows vengono sempre effettuate usando le credenziali di Windows specificate da @job_login e @job_password. L'agente di distribuzione effettua sempre la connessione locale al server di distribuzione usando l'autenticazione integrata di Windows. Per impostazione predefinita, l'agente si connette al Sottoscrittore usando l'autenticazione integrata di Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.

Esempio

In questo esempio viene creata una sottoscrizione pull ad aggiornamento immediato in una pubblicazione che supporta sottoscrizioni ad aggiornamento immediato. I valori di accesso e password vengono forniti in fase di esecuzione usando variabili di scripting sqlcmd.

Annotazioni

Lo script utilizza le variabili di scripting sqlcmd. Sono nel formato $(MyVariable). Per informazioni su come usare le variabili di scripting nella riga di comando e in SQL Server Management Studio, vedere la sezione Esecuzione di script di replica nell'argomento Concetti relativi alle stored procedure del sistema di replica.

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2008R2';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 

-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2008R2;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

Impostare le opzioni di risoluzione dei conflitti per l'aggiornamento in coda (SQL Server Management Studio)

Impostare le opzioni di risoluzione dei conflitti per le pubblicazioni che supportano le sottoscrizioni ad aggiornamento in coda nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> . Per altre informazioni sull'accesso a questa finestra di dialogo, vedere Visualizzare e modificare le proprietà della pubblicazione.

Per impostare le opzioni di risoluzione dei conflitti per gli aggiornamenti in coda

  1. Nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare uno dei valori seguenti per l'opzione Criteri di risoluzione dei conflitti :
    • Mantenere la modifica dell'editore
    • Mantenere la modifica del Sottoscrittore
    • Reinizializzare la sottoscrizione
  2. Fare clic su OK.

Vedere anche

Creare una pubblicazione
Sottoscrizioni modificabili per la replica transazionale
Utilizzo di sqlcmd con variabili di scripting