Articles

SQLShack

de hoeveelheid gegevens die vandaag wordt bewaard, beheerd en geopend is ongekend. Bedrijven verwachten dat de IT-afdeling om gegevens online en toegankelijk voor onbepaalde tijd te houden, waardoor intense druk op de databases die nodig zijn om op te slaan en te beheren. Om aan de behoeften van vandaag te voldoen, moeten we verouderde en inefficiënte oude processen vervangen door nieuwe, meer flexibele technieken. SQL Server replicatie is een van de technieken om aan dergelijke eisen te voldoen.

  • Note: Lees voor meer informatie over het repliceren van databases verschillende Stakeholders, verschillende standpunten: waarom databasebeheer een artikel met systematische aanpak vereist.

in dit artikel, laten we u vorm geven aan uw begrip van de volledige SQL Server replicatietopografie inclusief componenten, internals en de SQL om het allemaal aan elkaar te binden. Nadat u klaar bent met het lezen van dit artikel, zult u begrijpen:

  • SQL Server-replicatie, in het algemeen
  • Onderdelen van transactionele SQL Server-replicatie, in het bijzonder
  • Hoe krijg distributeur eigenschappen
  • Hoe vindt u de publisher met dezelfde distributeur
  • Wat zijn de databases die gebruikt worden voor SQL Server-replicatie
  • De algemene topologie van een replicatie-omgeving
  • Wat zijn de artikelen die zijn toegewezen aan het type van de SQL Server-replicatie model
  • Hoe krijg publicatie details
  • Hoe krijg abonnement details
  • SQL Server-Replicatie agenten
  • En meer …

replicatie

SQL Server replicatie is een technologie voor het kopiëren en distribueren van gegevens en databaseobjecten van de ene database naar de andere en vervolgens synchroniseren tussen databases om consistentie en integriteit van de gegevens te behouden. In de meeste gevallen is replicatie een proces van het reproduceren van de gegevens op de gewenste doelen. SQL Server-replicatie wordt gebruikt voor het continu kopiëren en synchroniseren van gegevens of het kan ook worden gepland om op vooraf bepaalde intervallen uit te voeren. Er zijn verschillende replicatie technieken die een verscheidenheid van data synchronisatie benaderingen ondersteunen; one-way; one-to-many; many-to-one; en bi-directional, en houden verschillende datasets in sync met elkaar.

transactionele SQL Server-replicatiecomponenten

het volgende diagram toont de componenten van transactionele SQL Server-replicatie.

met de SQL Server-replicatie …

  • Uitgever
  • Publicatie-database
  • Publicatie
  • Artikelen
  • Distributeur
  • Distributie data base
  • Abonnee –
  • Abonnement database
  • Abonnementen
  • Replicatie agenten

SQL Server-replicatie schema

Artikel

Een artikel is de fundamentele eenheid van de SQL Server-Replicatie. Een artikel kan bestaan uit tabellen, opgeslagen procedures en weergaven. Het is mogelijk om het artikel horizontaal en verticaal te schalen met behulp van een filteroptie. We kunnen ook meerdere artikelen over hetzelfde object maken met enkele beperkingen en beperkingen.

met de wizard Nieuwe publicatie kan het artikel worden genavigeerd. Hiermee kunnen we de eigenschappen van een artikel bekijken en opties bieden om eigenschappen voor de artikelen in te stellen. In sommige gevallen kunnen de eigenschappen ingesteld worden tijdens het aanmaken van de publicatie en is het een alleen-lezen eigenschap.

na het aanmaken van een SQL Server-replicatiepublicatie, bijvoorbeeld, als een eigenschap een wijziging vereist, zal er op zijn beurt een nieuwe replicatiesnapshot gegenereerd moeten worden. Als de publicatie een of meer abonnementen heeft dan vereist de wijziging dat alle abonnementen opnieuw worden geïnitialiseerd. Zie voor meer informatie Artikelen toevoegen/neerzetten aan/van bestaande publicatie in SQL Server-artikel.

Om een lijst van alle artikelen die zijn gepubliceerd, voer de volgende T-SQL

1
2
3
4
5
6
7
8
9
10
11
12

SELECTEER
Pub.
, Art.
, Art.
, Art.
, Art.
van de
.. Art
inner JOIN .. Pub
Op Art. = Pub.
ORDER BY
Pub., Art.

To get the details of articles in transactional or merge SQL Server replication in a published database, run the following T-SQL.

1
2
3
4
5
6
7
8

SELECT st.name , st.schema_id, st.is_published , st.is_merge_published, is_schema_published
van sys.tabellen St waarbij st. is_published = 1 of st. is_merge_published = 1 of st. is_schema_published = 1
Unie
selecteren sp.name, sp.schema_id, 0, 0, sp. is_schema_published
van sys.procedures sp waarbij sp. is_schema_published = 1
Unie
selecteren sv.name, sv.schema_id, 0, 0, sv. is_schema_published
van sys.waar sv. is_schema_published = 1;

To get detailed information about an article in the listed publisher, run the following T-SQL

1
2
3
4
5
6
7

DECLARE @publication AS sysname;
SET @publication = N’PROD_HIST_Pub’;
USE MES_PROD_AP
EXEC sp_helparticle
@publication = @publication;
GO

To get column level details, run the following T-SQL

1
2
3

USE MES_PROD_AP
GO
sp_helparticlecolumns @publication = N’PROD_HIST_Pub’ , @article = ’tb_Branch_Plant’

Om een lijst op van de kolommen die worden gepubliceerd in een transactionele replicatie in de publicatie database voer de volgende T-SQL

1
SELECTEER object_name(object_id) , de naam VAN sys.kolommen SC waarin SC.is_replicated = 1;

publicaties

een publicatie is een logische verzameling van artikelen uit een database. De entiteit stelt ons in staat om artikeleigenschappen op het hogere niveau te definiëren en te configureren, zodat de eigenschappen worden overgeërfd naar alle artikelen in die groep.

1
EXEC sp_helppublication;

Publisher database

de uitgever is een database die een lijst bevat van objecten die zijn aangeduid als SQL Server replication articles staan bekend als publication database. De uitgever kan één of meer publicaties hebben. Elke uitgever definieert een mechanisme voor gegevensvoortplanting door verschillende interne opgeslagen replicatieprocedures te maken.

1
2
3

USE Distribution
GO
select * from MSpublications

Publisher

The Publisher is a database instance that makes data available to other locations through SQL Server replication. De uitgever kan een of meer publicaties hebben, die elk een logisch gerelateerde verzameling objecten en gegevens definiëren om te repliceren.

distributeur

de Distributeur is een database die fungeert als een opslagplaats voor replicatiespecifieke gegevens in verband met een of meer uitgevers. In veel gevallen is de Distributeur een enkele database die zowel de uitgever als de Distributeur is. In de context van SQL Server replicatie, dit is algemeen bekend als een “lokale distributeur”. Aan de andere kant, als het is geconfigureerd op een aparte server, dan is het bekend als een “remote distributor”. Elke uitgever wordt geassocieerd met een enkele database die bekend staat als een “distribution database” oftewel de “distributeur”.

de distributiedatabase identificeert en slaat SQL Server-replicatiestatusgegevens, metadata over de publicatie op en fungeert in sommige gevallen als een wachtrij voor gegevens die van de uitgever naar de abonnees gaan.

afhankelijk van het replicatiemodel kan de Distributeur ook verantwoordelijk zijn voor het melden van de abonnees die zich op een publicatie hebben geabonneerd dat een artikel is gewijzigd. Ook de distributiedatabase onderhoudt de integriteit van de gegevens.

Distributiedatabases

elke Distributeur moet ten minste één distributiedatabase hebben. De distributiedatabase bestaat uit artikeldetails, replicatie metadata en data. Een Distributeur kan meer dan één distributiedatabase hebben; alle publicaties die bij één uitgever zijn gedefinieerd, moeten echter dezelfde distributiedatabase gebruiken.

om erachter te komen of …

  • een server een Distributeur is of niet?

    1
    SELECT @@ServerName Servername, case when is_distributor=1 then ‘Yes’ else ‘No’ end status FROM sys.servers WHERE name=’repl_distributor’ AND data_source=@@servername;

  • a distribution database installed or not?

    1
    SELECT name FROM sys.databases WHERE is_distributor = 1
  • a Publisher is using this Distributor or not?

    1
    EXEC sp_get_distributor

  • or just to interrogate various Distributor and Distribution database properties?

    1
    2
    3

    EXEC sp_helpdistributor;
    EXEC sp_helpdistributiondb;
    EXEC sp_helpdistpublisher;

Subscriber

A database instance that consumes SQL Server replication data from a publication is called a Subscriber. De abonnee kan gegevens ontvangen van een of meer uitgevers en publicaties. De abonnee kan gegevenswijzigingen ook doorgeven aan de uitgever of de gegevens opnieuw publiceren aan andere abonnees, afhankelijk van het type replicatieontwerp en-model.

1
EXEC sp_helpsubscriberinfo;

abonnementen

een abonnement is een verzoek om een kopie van een publicatie aan een abonnee te bezorgen. Het abonnement bepaalt welke publicatiegegevens zullen worden ontvangen, waar en wanneer.

Er zijn twee soorten abonnementen: push-abonnementen en pull-abonnementen

  • Push-abonnement: distributeur werkt de gegevens in de abonneedatabase rechtstreeks bij
  • Pull-abonnement: de abonnee is gepland om regelmatig bij de distributeur te controleren of er nieuwe wijzigingen beschikbaar zijn, en werkt vervolgens de gegevens in de abonnementsdatabase zelf bij.
1
EXEC sp_helpsubscription;

Abonnementen

Een doeldatabase van een replicatie-model is een abonnement genoemd database.

Replicatieagenten

SQL Server replicatie maakt gebruik van een vooraf gedefinieerde set van standalone programma ‘ s en gebeurtenissen worden agents genoemd, om de taken uit te voeren die verband houden met gegevens. Standaard worden SQL Server-replicatieagenten uitgevoerd als geplande taken onder SQL Server-Agent. Replicatieagenten kunnen ook worden uitgevoerd vanaf de opdrachtregel en door toepassingen die REPLICATIEBEHEEROBJECTEN (RMO) gebruiken. SQL Server-replicatieagenten kunnen worden bewaakt en beheerd met behulp van Replicatiemonitor en SQL Server Management Studio.

Replication snapshot Agent

De replication snapshot Agent wordt gebruikt met alle typen SQL Server-replicatietechnologie, aangezien deze de vereiste gegevensset biedt om de eerste gegevenssynchronisatie van de publicatiedatabase met de abonnementdatabase uit te voeren. Het bereidt schema en initiële gegevens van gepubliceerde artikelen, snapshot-bestanden, en registreert informatie over het synchronisatietype in de distributiedatabase.

Log Reader Agent

De Log Reader Agent wordt alleen gebruikt bij transactionele replicatie. Replicatietransacties worden verplaatst van het online transactielogboek van de publicatiedatabase naar de distributiedatabase.

Distribution Agent

De Distribution Agent wordt alleen gebruikt met replicatiesnapshot en transactionele SQL Server-replicatie. Deze agent past de eerste replicatiesnapshot toe op de abonnementsdatabase en later worden de gegevenswijzigingen bijgehouden en vastgelegd in de distributiedatabase en toegepast op de abonnementsdatabase.

Merge Agent

De Merge Agent wordt gebruikt met het merge replication model. De Merge Agent uploadt standaard wijzigingen van de abonnee naar de uitgever en downloadt vervolgens wijzigingen van de uitgever naar de abonnee. Elk abonnement heeft zijn eigen Merge Agent die verbinding maakt met zowel de uitgever als de abonnee en beide updates. De Merge Agent draait bij de distributeur voor push-abonnementen of de abonnee voor pull-abonnementen. Hier is de synchronisatie bi-directioneel. De gegevensconflicten worden afgehandeld door een set triggers die het gehele proces

samenvatting

tot nu toe hebben we een doorloop gezien van enkele van de belangrijke concepten van SQL Server replicatie. Ook worden T-SQL-scripts getoond om systeemtabellen en opgeslagen replicatieprocedures te bevragen om de meeste veelgestelde vragen over SQL Server-replicatie te beantwoorden.

Ik zal meer bespreken over SQL Server replicatie in komende artikelen. Als je je voelt, iets dat verbeterd kan worden in dit artikel, voel je vrij om je reactie hieronder…

inhoud

SQL Server-replicatie: Overzicht van de componenten en de topografie

SQL Replication: Basic setup en configuratie

Hoe Add/Drop artikelen van bestaande publicaties in SQL Server

Hoe om een snelle schatting vergelijken van gegevens in twee grote SQL Server-databases om te zien of ze gelijk zijn

SQL Server transactionele replicatie: Hoe stel een abonnement met een SQL Server-database back-up

het instellen van een aangepaste SQL Server-transactie replicatie model met een Centrale Abonnee en Meerdere Uitgever databases

het instellen van aangepaste SQL Server transactionele replicatie met een centrale uitgever en multiple subscriber-databases

het instellen van een DDL en DML SQL Server-database transactionele replicatie oplossing

Het opzetten van cross-platform transactionele SQL Server-replicatie van de database rapportage op Linux

SQL Server-database migraties met nul verlies van gegevens en nul downtime

transactionele gegevensreplicatie gebruiken om productiebelastingen op een gefaseerde server opnieuw af te spelen en te testen

hoe SQL Server-databasereplicatie in te stellen voor een rapportageserver

transactionele replicatie van SQL Server: Hoe een abonnement opnieuw te initialiseren met behulp van een “Replication support only” –TBA

SQL Server Replication Monitoring and setting alerts using PowerShell –TBA

  • auteur
  • recente berichten
Prashanth Jayaram
I ‘ m a database Technologist having 11+ years of rich, hands-on experience on database technologies. Ik ben Microsoft gecertificeerd Professional en ondersteund met een diploma in Master of Computer Application.
mijn specialiteit is het ontwerpen van & het implementeren van High availability oplossingen en cross-platform DB migratie. De technologieën die momenteel werken aan zijn SQL Server, PowerShell, Oracle en MongoDB.
Bekijk alle berichten van Prashanth Jayaram

Prashanth Jayaram
Laatste berichten door Prashanth Jayaram (zie all)
  • Een overzicht van de audit database in SQL – 28 januari 2021
  • het instellen van Azure Data Sync tussen Azure SQL-databases en lokale SQL Server – 20 januari 2021
  • het uitvoeren van SQL Azure database Import/Export activiteiten met behulp van PowerShell – 14 januari 2021