Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Nadat een publicatie is gemaakt, kunt u artikelen toevoegen en verwijderen. Artikelen kunnen op elk gewenst moment worden toegevoegd, maar de acties die nodig zijn voor het verwijderen van artikelen, zijn afhankelijk van het type replicatie en wanneer het artikel wordt verwijderd.
Artikelen toevoegen
Het toevoegen van een artikel omvat: het toevoegen van het artikel aan de publicatie; een nieuwe momentopname maken voor de publicatie; het abonnement synchroniseren om het schema en de gegevens voor het nieuwe artikel toe te passen.
Note
Als u een artikel toevoegt aan een samenvoegpublicatie en een bestaand artikel afhankelijk is van het nieuwe artikel, moet u een verwerkingsvolgorde opgeven voor beide artikelen met behulp van de parameter @processing_order van sp_addmergearticle en sp_changemergearticle. Houd rekening met het volgende scenario: u publiceert een tabel, maar u publiceert geen functie waarnaar de tabel verwijst. Als u de functie niet publiceert, kan de tabel niet op de Subscriber worden aangemaakt. Wanneer u de functie aan de publicatie toevoegt: geef een waarde op van 1 voor de parameter @processing_order van sp_addmergearticle; en geef een waarde op van 2 voor de parameter @processing_order van sp_changemergearticle, waarbij u de tabelnaam voor de parameter @article opgeeft. Deze verwerkingsvolgorde zorgt ervoor dat u de functie bij Abonnee maakt voordat de tabel ervan afhankelijk is. U kunt voor elk artikel verschillende getallen gebruiken, zolang het getal voor de functie lager is dan het getal voor de tabel.
Voeg een of meer artikelen toe via een van de volgende methoden:
Nadat u een artikel aan een publicatie hebt toegevoegd, moet u een nieuwe momentopname voor de publicatie maken (en alle partities als het een samenvoegpublicatie is met geparameteriseerde filters). De Distribution Agent of Merge Agent kopieert vervolgens het schema en de gegevens voor het nieuwe artikel naar de abonnee (de volledige publicatie wordt niet opnieuw geïnitialiseerd).
Zie De eerste momentopname maken en toepassen om een nieuwe momentopname te maken.
Als u een nieuwe momentopname wilt maken voor een samenvoegpublicatie met geparameteriseerde filters, raadpleegt u Een momentopname maken voor een samenvoegpublicatie met geparameteriseerde filters.
Nadat de momentopname is gemaakt, synchroniseert u het abonnement om het schema en de gegevens voor het nieuwe artikel te kopiëren.
Zie Een push-abonnement synchroniseren als u een push-abonnement wilt synchroniseren.
Zie Een pull-abonnement synchroniseren als u een pull-abonnement wilt synchroniseren.
Artikelen verwijderen
Artikelen kunnen op elk gewenst moment uit een publicatie worden verwijderd, maar u moet rekening houden met het volgende gedrag:
Als u een artikel uit een publicatie verwijdert, wordt het object niet verwijderd uit de publicatiedatabase of het bijbehorende object uit de abonnementsdatabase. Gebruik DROP <Object> om deze objecten indien nodig te verwijderen. Wanneer u een artikel verwijdert dat via foreign key-beperkingen is gerelateerd aan andere gepubliceerde artikelen, raden we u aan de tabel handmatig bij de Abonnee te verwijderen of een script op aanvraag uit te voeren: geef een script op dat de juiste DROP <Object>-instructies bevat. Zie Scripts uitvoeren tijdens synchronisatie (replicatie Transact-SQL programmeren) voor meer informatie.
Voor samenvoegpublicaties met een compatibiliteitsniveau van 90RTM of hoger kunnen artikelen op elk gewenst moment worden verwijderd, maar er is een nieuwe momentopname vereist. Additionally:
Als een artikel een bovenliggend artikel is in een joinfilter of logische recordrelatie, moeten de relaties eerst worden verwijderd, waarvoor opnieuw initialisatie is vereist.
Als een artikel het laatste geparameteriseerde filter in een publicatie heeft, moeten abonnementen opnieuw worden geïnitialiseerd.
Voor samenvoegpublicaties met een compatibiliteitsniveau dat lager is dan 90RTM, kunnen artikelen zonder speciale overwegingen worden verwijderd vóór de eerste synchronisatie van abonnementen. Als een artikel wordt verwijderd nadat een of meer abonnementen zijn gesynchroniseerd, moeten de abonnementen worden verwijderd, opnieuw worden gemaakt en gesynchroniseerd.
Voor momentopnamen of transactionele publicaties kunnen artikelen worden verwijderd zonder speciale overwegingen voordat abonnementen worden gemaakt. Als een artikel wordt verwijderd nadat een of meer abonnementen zijn gemaakt, moeten de abonnementen worden verwijderd, opnieuw gemaakt en gesynchroniseerd. Zie Abonneren op publicaties en sp_dropsubscription (Transact-SQL) voor meer informatie over het verwijderen van abonnementen. sp_dropsubscription kunt u één artikel uit het abonnement verwijderen in plaats van het hele abonnement.
Het verwijderen van een artikel uit een publicatie omvat het verwijderen van het artikel en het maken van een nieuwe momentopname voor de publicatie. Als u een artikel weglaat, wordt de huidige momentopname ongeldig gemaakt; daarom moet er een nieuwe momentopname worden gemaakt.
- Als u een artikel uit een publicatie wilt verwijderen, raadpleegt u Artikelen toevoegen aan en verwijderen uit een publicatie (SQL Server Management Studio) of een artikel verwijderen.
Nadat u een artikel uit een publicatie hebt verwijderd, moet u een nieuwe momentopname voor de publicatie maken (en alle partities als het een samenvoegpublicatie is met geparameteriseerde filters).
Zie De eerste momentopname maken en toepassen om een nieuwe momentopname te maken.
Als u een nieuwe momentopname wilt maken voor een samenvoegpublicatie met geparameteriseerde filters, raadpleegt u Een momentopname maken voor een samenvoegpublicatie met geparameteriseerde filters.
Zoals hierboven vermeld, vereist het verwijderen van een artikel in sommige gevallen dat abonnementen worden verwijderd, opnieuw worden gemaakt en vervolgens worden gesynchroniseerd. Zie Abonneren op publicaties en gegevens synchroniseren voor meer informatie.
Note
SQL Server 2014 (12.x) Service Pack 2 of hoger en SQL Server 2016 (13.x) Service Pack 1 of hoger ondersteunen het verwijderen van een tabel met behulp van DROP TABLE de DDL-opdracht voor artikelen die deelnemen aan transactionele replicatie. Als een DROP TABLE DDL wordt ondersteund door de publicatie(s), wordt de DROP TABLE tabel verwijderd uit de publicatie en de database. De logboeklezeragent plaatst een opschoonopdracht voor de distributiedatabase van de verwijderde tabel en voert het opschonen van de metagegevens van de uitgever uit. Als de logboeklezer niet alle logboekrecords heeft verwerkt die verwijzen naar de verwijderde tabel, worden nieuwe opdrachten genegeerd die zijn gekoppeld aan de verwijderde tabel. Al verwerkte records worden geleverd aan de distributiedatabase. Ze kunnen worden toegepast op de abonneedatabase als de Distribution Agent ze verwerkt voordat Logboeklezer het verouderde (verwijderde) artikel(en) opschoont. De standaardinstelling voor alle transactionele replicatiepublicaties is om DDL niet te ondersteunen DROP TABLE . KB-3170123 bevat meer informatie over deze verbetering.