Delen via


Een updatable abonnement maken op een transactionele publicatie

Van toepassing op:SQL Server

Opmerking

Deze functie blijft ondersteund in versies van SQL Server van 2012 tot en met 2016. Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

Met transactionele replicatie kunnen wijzigingen die zijn aangebracht bij een Abonnee, worden doorgegeven aan de Publisher met behulp van directe of in de wachtrij geplaatste update-abonnementen. U kunt programmatisch een bijwerkend abonnement maken met behulp van opgeslagen replicatieprocedures.

Configureer updatable abonnementen op de pagina Updatable Subscriptions van de wizard Nieuw abonnement. Deze pagina is alleen beschikbaar als u een transactionele publicatie hebt ingeschakeld voor bijwerkbare abonnementen. Zie voor meer informatie over het inschakelen van bijwerkbare abonnementen, Bijwerkbare Abonnementen Inschakelen voor Transactionele Publicaties.

Een abonnement dat kan worden bijgewerkt vanuit Publisher configureren

  1. Maak verbinding met Publisher in Microsoft SQL Server Management Studio en vouw vervolgens het serverknooppunt uit.

  2. Vouw de map Replicatie uit en vouw vervolgens de map Lokale publicaties uit.

  3. Klik met de rechtermuisknop op een transactionele publicatie die is ingeschakeld voor het bijwerken van abonnementen en klik vervolgens op Nieuwe abonnementen.

  4. Volg pagina's in de wizard om opties voor het abonnement in te stellen, zoals waar de distributie-agent moet worden uitgevoerd.

  5. Controleer of Repliceren is geselecteerd op de pagina Updatable Subscriptions van de wizard Nieuw abonnement.

  6. Selecteer een optie in de vervolgkeuzelijst Doorvoeren in Publisher :

    • Als u abonnementen direct wilt bijwerken, selecteert u Wijzigingen gelijktijdig doorvoeren. Als u deze optie selecteert en de publicatie het bijwerken van abonnementen in de wachtrij toestaat (de standaardinstelling voor publicaties die zijn gemaakt met de wizard Nieuwe publicatie), wordt de abonnementseigenschap update_mode ingesteld op failover. Met deze modus kunt u later indien nodig overschakelen naar bijwerken in de wachtrij.

    • Om gebruik te maken van een update-abonnement met wachtrij, selecteert u Wijzigingen in wachtrij plaatsen en indien mogelijk doorvoeren. Als u deze optie selecteert en de publicatie het direct bijwerken van abonnementen toestaat (de standaardinstelling voor publicaties die zijn gemaakt met de wizard Nieuwe publicatie), en de abonnee SQL Server 2005 of een latere versie uitvoert, wordt de abonnementseigenschap update_mode ingesteld op failover in de wachtrij. Met deze modus kunt u zo nodig overschakelen naar direct bijwerken.

    Raadpleeg Schakelen tussen updatemodi voor een updatable transactioneel abonnement voor informatie over het schakelen tussen updatemodi.

  7. De Inlogpagina voor updatable abonnementen wordt weergegeven voor abonnementen die direct worden bijgewerkt of als update_mode is ingesteld op failover in de wachtrij. Geef op de pagina Aanmelden voor updatable Abonnementen een gekoppelde server op waarmee verbindingen met publisher worden gemaakt voor het direct bijwerken van abonnementen. Verbindingen worden gebruikt door triggers die bij de abonnee worden geactiveerd en wijzigingen doorgegeven aan de Uitgever. Selecteer een van de volgende opties:

    • Maak een gekoppelde server die verbinding maakt met behulp van SQL Server-verificatie. Selecteer deze optie als u geen externe server of gekoppelde server hebt gedefinieerd tussen de abonnee en de uitgever. Replicatie maakt een gekoppelde server voor u. Het account dat u opgeeft, moet al bestaan bij publisher.

    • Gebruik een gekoppelde server of externe server die u al hebt gedefinieerd. Selecteer deze optie als u een externe server of gekoppelde server hebt gedefinieerd tussen de abonnee en de uitgever met behulp van sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio of een andere methode.

    Voor informatie over de machtigingen die vereist zijn voor het gekoppelde serveraccount, zie de Wachtrij-Updatingsabonnementen van De Abonnee Beveiligen.

  8. Voltooi de configureerhulp.

Een updatable abonnement van de abonnee configureren

  1. Maak verbinding met de abonnee in SQL Server Management Studio en vouw vervolgens het serverknooppunt uit.

  2. Vouw de map Replicatie uit.

  3. Klik met de rechtermuisknop op de map Lokale abonnementen en klik vervolgens op Nieuwe abonnementen.

  4. Selecteer op de pagina Publicatie van de wizard Nieuw abonnement de optie SQL Server Publisher zoeken in de vervolgkeuzelijst Publisher .

  5. Maak verbinding met publisher in het dialoogvenster Verbinding maken met server .

  6. Selecteer een transactionele publicatie die is ingeschakeld voor het bijwerken van abonnementen op de pagina Publicatie .

  7. Volg de pagina's in de wizard om opties voor het abonnement op te geven, zoals waar de Distributieagent moet draaien.

  8. Controleer of Repliceren is geselecteerd op de pagina Updatable Subscriptions van de wizard Nieuw abonnement.

  9. Selecteer een optie in de vervolgkeuzelijst Doorvoeren in Publisher :

    • Als u abonnementen direct wilt bijwerken, selecteert u Wijzigingen gelijktijdig doorvoeren. Als u deze optie selecteert en de publicatie het bijwerken van abonnementen in de wachtrij toestaat (de standaardinstelling voor publicaties die zijn gemaakt met de wizard Nieuwe publicatie), wordt de abonnementseigenschap update_mode ingesteld op failover. Met deze modus kunt u zo nodig overschakelen naar bijwerken in de wachtrij.

    • Als u wachtrij-updates voor abonnementen wilt gebruiken, selecteert u Wijzigingen in de wachtrij en voert u ze door indien mogelijk. Als u deze optie selecteert en de publicatie het direct bijwerken van abonnementen toestaat (de standaardinstelling voor publicaties die zijn gemaakt met de wizard Nieuwe publicatie), en de abonnee SQL Server 2005 of een latere versie uitvoert, wordt de abonnementseigenschap update_mode ingesteld op failover in de wachtrij. Met deze modus kunt u zo nodig overschakelen naar direct bijwerken.

    Voor informatie over het schakelen tussen updatemodi, zie Schakelen tussen updatemodi voor een bijwerkbaar transactioneel abonnement.

  10. De pagina Inloggen voor bijwerkbare abonnementen wordt weergegeven voor abonnementen die directe bijwerking gebruiken of update_mode ingesteld op geplande failover. Geef op de pagina Aanmelden voor updatable Abonnementen een gekoppelde server op waarmee verbindingen met publisher worden gemaakt voor het direct bijwerken van abonnementen. Verbindingen worden gebruikt door triggers die bij de abonnee worden geactiveerd en wijzigingen doorgegeven aan de Uitgever. Selecteer een van de volgende opties:

    • Maak een gekoppelde server die verbinding maakt met behulp van SQL Server-verificatie. Selecteer deze optie als u geen externe server of gekoppelde server hebt gedefinieerd tussen de abonnee en de uitgever. Replicatie maakt een gekoppelde server voor u. Het account dat u opgeeft, moet al bestaan bij publisher.

    • Gebruik een gekoppelde server of externe server die u al hebt gedefinieerd. Selecteer deze optie als u een externe server of gekoppelde server hebt gedefinieerd tussen de abonnee en de uitgever met behulp van sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio of een andere methode.

    Voor informatie over de machtigingen die vereist zijn voor het gekoppelde serveraccount, zie de Wachtrij-Updatingsabonnementen van De Abonnee Beveiligen.

  11. Voltooi de configureerhulp.

Een pull-abonnement direct bijwerken

  1. Controleer bij Publisher of de publicatie ondersteuning biedt voor het direct bijwerken van abonnementen door sp_helppublication uit te voeren.

    • Als de waarde van allow_sync_tran in de resultatenset 1 is, ondersteunt de publicatie directe bijwerkabonnementen.
    • Als de waarde van allow_sync_tran in de resultatenset 0 is, moet de publicatie opnieuw worden gemaakt met direct bijwerken van abonnementen ingeschakeld.
  2. Controleer in Publisher of de publicatie pull-abonnementen ondersteunt door sp_helppublication uit te voeren.

    • Als de waarde van allow_pull in de resultatenset 1 is, ondersteunt de publicatie pull-abonnementen.
    • Als de waarde allow_pull0 is, voert u sp_changepublication uit, waarbij u allow_pull opgeeft voor @property en true voor @value.
  3. Voer sp_addpullsubscription uit bij de abonnee. Geef @publisher en @publication op, en een van de volgende waarden voor @update_mode:

    • sync tran - schakelt het abonnement in voor onmiddellijke updates.
    • failover - schakelt het abonnement in voor onmiddellijke updates met in de wachtrij geplaatste update als failoveroptie.

    Opmerking

    failover vereist dat de publicatie ook is ingeschakeld voor het bijwerken van abonnementen in de wachtrij.

  4. Voer sp_addpullsubscription_agent uit bij de abonnee. Geef het volgende op:

    • De @publisher, @publisher_dben @publication parameters.
    • De Microsoft Windows-referenties waaronder de Distributie-agent bij de Abonnee draait voor @job_login en @job_password.

    Opmerking

    Verbindingen die zijn gemaakt met geïntegreerde Windows-verificatie, worden altijd gemaakt met behulp van de Windows-referenties die zijn opgegeven door @job_login en @job_password. De distributieagent maakt altijd de lokale verbinding met de abonnee met behulp van geïntegreerde Windows-verificatie. De agent maakt standaard verbinding met de distributeur met behulp van geïntegreerde Windows-verificatie.

    • (Optioneel) Een waarde voor 0 en de aanmeldingsgegevens van @distributor_security_mode Microsoft SQL Server voor @distributor_login en@distributor_password, als u SQL Server-verificatie moet gebruiken bij het maken van verbinding met de distributeur.
    • Een planning voor de distributieagenttaak voor dit abonnement.
  5. Voer sp_link_publication uit bij de abonnee op de abonnementsdatabase. Geef @publisher, @publicationde naam van de publicatiedatabase voor @publisher_dben een van de volgende waarden op voor @security_mode:

    • 0 - GEBRUIK SQL Server-verificatie bij het maken van updates bij publisher. Voor deze optie moet u een geldige aanmelding opgeven bij Publisher voor @login en @password.
    • 1 - Gebruik de beveiligingscontext van de gebruiker die wijzigingen aanbrengt bij de abonnee wanneer u verbinding maakt met de Uitgever. Zie sp_link_publication voor beperkingen met betrekking tot deze beveiligingsmodus.
    • 2 - Gebruik een bestaande, door de gebruiker gedefinieerde gekoppelde serveraanmelding die is gemaakt met sp_addlinkedserver.
  6. Voer bij de uitgever sp_addsubscription uit met de specificatie @publication, @subscriber, @destination_db, en een waarde van pull voor @subscription_type, en dezelfde waarde die is opgegeven in stap 3 voor @update_mode. Hiermee wordt het pull-abonnement geregistreerd bij Publisher.

Maak een pushabonnement voor directe updates

  1. Controleer bij Publisher of de publicatie ondersteuning biedt voor het direct bijwerken van abonnementen door sp_helppublication uit te voeren.

    • Als de waarde van allow_sync_tran in de resultatenset 1 is, ondersteunt de publicatie directe updates van 1-abonnementen.
    • Als de waarde van de resultatenset allow_sync_tran is, moet de publicatie opnieuw worden gemaakt met direct bijwerken van abonnementen 0 ingeschakeld.
  2. Controleer bij Publisher of de publicatie pushabonnementen ondersteunt door sp_helppublication uit te voeren.

    • Als de waarde van allow_push in de resultaatset 1 is, ondersteunt de publicatie pushabonnementen.
    • Voer sp_changepublication uit als de waarde allow_push0 is, waarbij u allow_push voor @property en true voor @value opgeeft.
  3. Voer in Publisher sp_addsubscription uit. Geef @publication, @subscriber, @destination_db op, en een van de volgende waarden voor @update_mode:

    • sync tran - biedt ondersteuning voor onmiddellijke updates.
    • failover - maakt ondersteuning mogelijk voor direct bijwerken met in de wachtrij geplaatste updates als failoveroptie.

    Opmerking

    failover vereist dat de publicatie ook is ingeschakeld voor het bijwerken van abonnementen in de wachtrij.

  4. Voer in Publisher sp_addpushsubscription_agent uit. Geef de volgende parameters op:

    • @subscriber, @subscriber_db, en @publication.

    • De Windows-referenties waaronder de Distributie-agent bij de Distributeur voor @job_login en @job_password wordt uitgevoerd.

    Opmerking

    Verbindingen die zijn gemaakt met geïntegreerde Windows-verificatie, worden altijd gemaakt met behulp van de Windows-referenties die zijn opgegeven door @job_login en @job_password. De distributieagent maakt altijd de lokale verbinding met de distributeur met behulp van geïntegreerde Windows-verificatie. De agent maakt standaard verbinding met de abonnee met behulp van geïntegreerde Windows-verificatie.

    • (Optioneel) Een waarde voor 0@subscriber_security_mode en de SQL Server-aanmeldingsgegevens voor @subscriber_login en @subscriber_password, als u SQL Server-verificatie moet gebruiken bij het maken van verbinding met de abonnee.
    • Een planning voor de distributieagenttaak voor dit abonnement.
  5. Voer sp_link_publication uit bij de abonnee op de abonnementsdatabase. Geef @publisher, @publicationde naam van de publicatiedatabase voor @publisher_dben een van de volgende waarden op voor @security_mode:

    • 0 - GEBRUIK SQL Server-verificatie bij het maken van updates bij publisher. Voor deze optie moet u een geldige aanmelding opgeven bij Publisher voor @login en @password.
    • 1 - Gebruik de beveiligingscontext van de gebruiker die wijzigingen aanbrengt bij de abonnee wanneer u verbinding maakt met de Uitgever. Zie sp_link_publication voor beperkingen met betrekking tot deze beveiligingsmodus.
    • 2 - Gebruik een bestaande, door de gebruiker gedefinieerde gekoppelde serveraanmelding die is gemaakt met sp_addlinkedserver.

Een pull-abonnement voor wachtrij-bijwerking maken

  1. Controleer in Publisher of de publicatie ondersteuning biedt voor het bijwerken van abonnementen in de wachtrij door sp_helppublication uit te voeren.

    • Als de waarde van allow_queued_tran in de resultatenset 1 is, ondersteunt de publicatie het direct bijwerken van abonnementen.
    • Als de waarde van allow_queued_tran in de resultatenset 0 is, moet de publicatie opnieuw worden gemaakt met gequeueerde updates van abonnementen ingeschakeld.
  2. Controleer in Publisher of de publicatie pull-abonnementen ondersteunt door sp_helppublication uit te voeren.

    • Als de waarde van allow_pull in de resultatenset 1 is, ondersteunt de publicatie pull-abonnementen.
    • Als de waarde van allow_pull0 is, voert u sp_changepublication uit door allow_pull voor @property op te geven en true voor @value.
  3. Voer sp_addpullsubscription uit bij de abonnee. Geef @publisher en @publication op, en specificeer een van de volgende waarden voor @update_mode:

    • queued tran - stelt het abonnement in voor updates in de wachtrij.
    • queued failover - biedt ondersteuning voor wachtrij-bijwerking met directe updates als failoveroptie.

    Opmerking

    queued failover vereist dat de publicatie ook is ingeschakeld voor het direct bijwerken van abonnementen. Als u een failover wilt uitvoeren om direct bij te werken, moet u sp_link_publication gebruiken om de referenties te definiëren waaronder wijzigingen bij de abonnee worden gerepliceerd naar de Uitgever.

  4. Voer sp_addpullsubscription_agent uit bij de abonnee. Geef de volgende parameters op:

    • @publisher, @publisher_db, en @publication.
    • De Windows-referenties waaronder de distributieagent bij de abonnee wordt uitgevoerd @job_login en @job_password.

    Opmerking

    Verbindingen die zijn gemaakt met geïntegreerde Windows-verificatie, worden altijd gemaakt met behulp van de Windows-referenties die zijn opgegeven door @job_login en @job_password. De distributieagent maakt altijd de lokale verbinding met de abonnee met behulp van geïntegreerde Windows-verificatie. De agent maakt standaard verbinding met de distributeur met behulp van geïntegreerde Windows-verificatie.

    • (Optioneel) Een waarde voor 0@distributor_security_mode en de SQL Server-aanmeldingsgegevens voor @distributor_login en @distributor_password, als u SQL Server-verificatie moet gebruiken bij het maken van verbinding met de distributeur.
    • Een planning voor de distributieagenttaak voor dit abonnement.
  5. Voer bij de uitgever sp_addsubscriber uit om de abonnee te registreren bij de uitgever, waarbij u een waarde voor pull opgeeft tussen @publication en @subscriber, en dezelfde waarde gebruikt als in stap 3 voor @update_mode. Hiermee wordt het pull-abonnement geregistreerd bij Publisher.

Een geüpdatet push-abonnement in de wachtrij maken

  1. Controleer in Publisher of de publicatie ondersteuning biedt voor het bijwerken van abonnementen in de wachtrij door sp_helppublication uit te voeren.

    • Als de waarde van allow_queued_tran in de resultatenset 1 is, ondersteunt de publicatie het direct bijwerken van abonnementen.
    • Als de waarde van allow_queued_tran in de resultatenset 0 is, moet de publicatie opnieuw worden gemaakt met abonnementen met wachtrij-updates ingeschakeld. Voor meer informatie, zie Hoe: het bijwerken van abonnementen voor transactionele publicaties inschakelen (Replicatie Transact-SQL programmeren).
  2. Controleer bij Publisher of de publicatie pushabonnementen ondersteunt door sp_helppublication uit te voeren.

    • Als de waarde van allow_push in de resultatenset 1 is, ondersteunt de publicatie pushabonnementen.
    • Als de waarde van allow_push0 is, voer sp_changepublication uit, waarbij allow_push wordt opgegeven voor @property en true voor @value.
  3. Voer in Publisher sp_addsubscription uit. Specificeer @publication, @subscriber, @destination_db, en een van de volgende waarden voor @update_mode:

    • queued tran - schakelt het abonnement in voor wachtrij-updates.
    • queued failover - biedt ondersteuning voor het bijwerken in de wachtrij met onmiddellijke updates als failoveroptie.

    Opmerking

    De optie voor failover in de wachtrij vereist dat de publicatie ook is ingeschakeld voor het direct bijwerken van abonnementen. Als u een failover wilt uitvoeren om direct bij te werken, moet u sp_link_publication gebruiken om de referenties te definiëren waaronder wijzigingen bij de abonnee worden gerepliceerd naar de Uitgever.

  4. Voer in Publisher sp_addpushsubscription_agent uit. Geef de volgende parameters op:

    • @subscriber, @subscriber_db, en @publication.
    • Windows-referenties waaronder de distributie-agent bij de Distributor wordt uitgevoerd voor @job_login en @job_password.

    Opmerking

    Verbindingen die zijn gemaakt met geïntegreerde Windows-verificatie, worden altijd gemaakt met behulp van de Windows-referenties die zijn opgegeven door @job_login en @job_password. De distributieagent maakt altijd de lokale verbinding met de distributeur met behulp van geïntegreerde Windows-verificatie. De agent maakt standaard verbinding met de abonnee met behulp van geïntegreerde Windows-verificatie.

    • (Optioneel) Een waarde voor 0@subscriber_security_mode en de SQL Server-aanmeldingsgegevens voor @subscriber_login en @subscriber_password, als u SQL Server-verificatie moet gebruiken bij het maken van verbinding met de abonnee.
    • Een planning voor de distributieagenttaak voor dit abonnement.

Opties voor conflictoplossing voor bijgeplaatste updates instellen

Opties voor conflictoplossing instellen voor publicaties die ondersteuning bieden voor het bijwerken van abonnementen in de wachtrij op de pagina Abonnementsopties van het dialoogvenster Publicatie-eigenschappen<>. Zie Publicatie-eigenschappen weergeven en wijzigen voor meer informatie over het openen van dit dialoogvenster.

  1. Selecteer op de pagina Abonnementsopties van het dialoogvenster Publicatie-eigenschappen - <Publicatie> een van de volgende waarden voor de beleidsoptie Conflictoplossing :

    • De Publisher-wijziging behouden
    • De wijziging van de abonnee behouden
    • Het abonnement opnieuw initialiseren

Example

In dit voorbeeld wordt een pull-abonnement direct bijgewerkt naar een publicatie die ondersteuning biedt voor het direct bijwerken van abonnementen. Aanmeldings- en wachtwoordwaarden worden tijdens runtime opgegeven met behulp van sqlcmd-scriptvariabelen.

Opmerking

Dit script maakt gebruik van sqlcmd-scriptvariabelen. Ze zijn in de vorm $(MyVariable). Zie de sectie Replicatiescripts uitvoeren in het onderwerp Concepten van opgeslagen procedures voor replicatiesysteem voor informatie over het gebruik van scriptvariabelen op de opdrachtregel en in SQL Server Management Studio.

-- 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'AdventureWorks2022';
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 AdventureWorks2022;
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'AdventureWorks2022Replica';
SET @subscriber = $(SubServer);

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