Articles

SQLShack

volymen av data som behålls, hanteras och nås idag är oöverträffad. Företag förväntar sig att IT-avdelningen ska hålla data online och tillgängliga på obestämd tid, vilket sätter ett intensivt tryck på de databaser som krävs för att lagra och hantera det. För att möta dagens behov måste vi ersätta föråldrade och ineffektiva äldre processer med nya, mer smidiga tekniker. SQL Server Replication är en av teknikerna för att tillgodose sådana krav.

  • Obs: Om du vill veta mer om replikera databaser, läs olika intressenter, olika vyer: varför databashantering kräver en systematisk strategi artikel.

i den här artikeln, låt oss du forma din förståelse av hela SQL Server replikering topografi inklusive komponenter, interna och SQL att binda ihop allt. När du har läst den här artikeln förstår du:

  • SQL Server replication, i allmänhet
  • komponenter i transaktionell SQL Server replication, i synnerhet
  • hur man får distributörsegenskaper
  • hur man hittar utgivaren med samma distributör
  • vilka databaser används för SQL Server replication
  • den allmänna topologin för en replikationsmiljö
  • vilka artiklar är mappade till typen av SQL Server replication model
  • hur man får publiceringsdetaljer
  • hur man får prenumerationsdetaljer
  • SQL Server replication Agents
  • och mer…

Replication

SQL Server replication är en teknik för att kopiera och distribuera data och databasobjekt från en databas till en annan och sedan synkronisera mellan databaser för att upprätthålla konsekvens och integritet av data. I de flesta fall är replikering en process för att reproducera data vid de önskade målen. SQL Server replication används för att kopiera och synkronisera data kontinuerligt eller det kan också schemaläggas att köras med förutbestämda intervall. Det finns flera olika replikationstekniker som stöder en mängd olika datasynkroniseringsmetoder; enkelriktad; en-till-många; många-till-en; och dubbelriktad, och hålla flera dataset synkroniserade med varandra.

Transaktions SQL Server replication components

Följande diagram visar komponenterna i transaktions SQL Server replication.

inklusive SQL Server replication …

  • Utgivare
  • Publiceringsdatabas
  • publikation
  • artiklar
  • distributör
  • Distributionsdatabas
  • abonnent
  • Prenumerationsdatabas
  • prenumeration
  • Replication agents

SQL Server replication diagram

artikel

en artikel är grundenheten för SQL Server-replikering. En artikel kan bestå av tabeller, lagrade procedurer och vyer. Det är möjligt att skala artikeln, horisontellt och vertikalt med ett filteralternativ. Vi kan också skapa flera artiklar om samma objekt med vissa begränsningar och begränsningar.

med guiden ny publikation kan artikeln navigeras. Det gör att vi kan se egenskaperna för en artikel och ge alternativ för att ställa in egenskaper för artiklarna. I vissa fall kan egenskaperna ställas in under publiceringstiden och det är en skrivskyddad egenskap.

efter skapandet av en SQL Server-replikationspublikation, till exempel, om någon egenskap kräver en ändring, kommer den i sin tur att kräva att en ny replikationsbild genereras. Om publikationen har en eller flera prenumerationer kräver ändringen att alla prenumerationer startas om. Mer information finns i så här lägger du till/släpper artiklar till / från befintlig publikation i SQL Server-artikeln.

för att lista alla artiklar som publiceras, kör följande T-SQL

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

välj
pub.
, Art.
, Art.
, Art.
, Art.
från
.. Konst
inre anslutning .. Pub
på konst. = 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
från sys.tabeller st där st. is_published = 1 eller st. is_merge_published = 1 eller st. is_schema_published = 1
UNION
välj sp.name, sp.schema_id, 0, 0, sp.is_schema_published
från sys.förfaranden sp där sp. is_schema_published = 1
UNION
välj sv.name, sv.schema_id, 0, 0, sv. is_schema_published
från sys.visningar sv där 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’

för att lista kolumnerna som publiceras i transaktionsreplikation i publikationsdatabasen, kör följande T-SQL

1
välj object_name(object_id) , namn från sys.kolumner sc där sc. is_replicated = 1;

publikationer

en publikation är en logisk samling artiklar från en databas. Enheten tillåter oss att definiera och konfigurera artikelegenskaper på högre nivå så att egenskaperna ärvs till alla artiklar i den gruppen.

1
Exec sp_helppublication;

Publisher database

utgivaren är en databas som innehåller en lista över objekt som betecknas som SQL Server replication artiklar kallas publikationsdatabas. Förlaget kan ha en eller flera publikationer. Varje utgivare definierar en datautbredningsmekanism genom att skapa flera interna replikationslagrade procedurer.

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. Utgivaren kan ha en eller flera publikationer, var och en definierar en logiskt relaterad uppsättning objekt och data som ska replikeras.

distributör

distributören är en databas som fungerar som ett lagerhus för replikationsspecifika data associerade med en eller flera utgivare. I många fall är distributören en enda databas som fungerar som både utgivare och distributör. I samband med SQL Server-replikering är detta allmänt känt som en”lokal distributör”. Å andra sidan, om den är konfigurerad på en separat server, är den känd som en ”fjärrdistributör”. Varje utgivare är associerad med en enda databas som kallas en ”distributionsdatabas” aka ”distributören”.

distributionsdatabasen identifierar och lagrar statusdata för SQL Server-replikering, metadata om publikationen och fungerar i vissa fall som en kö för data som flyttas från utgivaren till prenumeranterna.

beroende på replikeringsmodellen kan distributören också vara ansvarig för att meddela de prenumeranter som har prenumererat på en publikation att en artikel har ändrats. Distributionsdatabasen upprätthåller också dataens integritet.

Distributionsdatabaser

varje Distributör måste ha minst en distributionsdatabas. Distributionsdatabasen består av artikel detalj, replikering metadata och data. En distributör kan ha mer än en distributionsdatabas; alla publikationer som definieras i en enda utgivare måste dock använda samma distributionsdatabas.

för att ta reda på om …

  • en server är en distributör eller inte?

    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. Abonnenten kan ta emot data från en eller flera förlag och publikationer. Abonnenten kan också skicka dataändringar tillbaka till utgivaren eller publicera data till andra abonnenter beroende på typen av replikationsdesign och modell.

1
Exec sp_helpsubscriberinfo;

Prenumerationer

en prenumeration är en begäran om att en kopia av en publikation ska levereras till en prenumerant. Prenumerationen definierar vilka publiceringsdata som ska tas emot, var och när.

det finns två typer av prenumerationer: push-prenumerationer och pull-Prenumerationer

  • Push-prenumeration: distributör uppdaterar direkt data i Abonnentdatabasen
  • Pull-prenumeration: abonnenten är planerad att regelbundet kontrollera hos distributören om några nya ändringar är tillgängliga och uppdaterar sedan data i själva prenumerationsdatabasen.
1
Exec sp_helpsubscription;

prenumerationsdatabaser

en måldatabas för en replikationsmodell kallas en prenumerationsdatabas.

Replication agents

SQL Server replication använder en fördefinierad uppsättning fristående program och händelser kallas agenter, för att utföra de uppgifter som är associerade med data. Som Standard körs SQL Server replication agents som schemalagda jobb under SQL Server Agent. Replikeringsagenter kan också köras från kommandoraden och av program som använder Replikeringshanteringsobjekt (RMO). SQL Server replication agents kan övervakas och administreras med Replication Monitor och SQL Server Management Studio.

replication snapshot Agent

Replication snapshot Agent används med alla typer av SQL Server replication technology eftersom det ger den nödvändiga datamängden för att utföra den initiala datasynkroniseringen av publikationsdatabasen med prenumerationsdatabasen. Den förbereder schema och initialdata för publicerade artiklar, ögonblicksfiler och registrerar information om synkroniseringstypen i distributionsdatabasen.

Loggläsaragent

Loggläsaragenten används endast med transaktionsreplikation. Den flyttar replikeringstransaktioner från onlinetransaktionsloggen i publikationsdatabasen till distributionsdatabasen.

Distributionsagent

Distributionsagenten används endast med Replication snapshot och transaktionell SQL Server replication. Den här agenten tillämpar den första replikationsbilden på prenumerationsdatabasen och senare spåras och registreras dataändringarna i distributionsdatabasen och tillämpas på prenumerationsdatabasen.

Sammanfogningsagent

Sammanfogningsagenten används med sammanfogningsreplikationsmodellen. Som standard laddar Sammankopplingsagenten upp ändringar från prenumeranten till utgivaren och hämtar sedan ändringar från utgivaren till prenumeranten. Varje prenumeration har sin egen Sammanfogningsagent som ansluter till både utgivaren och abonnenten och uppdaterar båda. Sammanslagningsagenten körs antingen hos distributören för push-prenumerationer eller abonnenten för pull-Prenumerationer. Här är synkroniseringen dubbelriktad. Datakonflikterna hanteras av en uppsättning triggers som stöder hela processen

sammanfattning

hittills har vi sett en genomgång av några av de viktiga begreppen SQL Server replication. Dessutom visas T-SQL-skript för att fråga systemtabeller och replikerade lagrade procedurer för att svara på de flesta av de vanliga frågorna om SQL Server-replikering.

Jag kommer att diskutera mer om SQL Server replication i kommande artiklar. Om du känner att något kan förbättras i den här artikeln, lämna gärna din kommentar nedan…

Innehållsförteckning

SQL Server replication: översikt över komponenter och topografi

SQL Replication: grundläggande inställningar och konfiguration

hur man lägger till/släpper artiklar från befintliga publikationer i SQL Server

hur man gör en snabb beräknad jämförelse av data i två stora SQL Server-databaser för att se om de är lika p>

SQL Server transaktionsreplikation: Hur man återinitiera en prenumeration med hjälp av en SQL Server-databas backup

hur man ställer in en anpassad SQL Server transaktionsreplikeringsmodell med en Central abonnent och flera Publisher databaser

hur man ställer in Anpassad SQL Server transaktionsreplikerings med en central publisher och flera abonnentdatabaser

hur man ställer in en DDL och DML SQL Server databas transaktionsreplikeringslösning

hur man ställer in plattformsoberoende transaktions SQL Server replikering för Databas rapportering om Linux

SQL Server-databasmigreringar med noll dataförlust och noll driftstopp

använda transaktionsdata replikation för att spela och testa produktionsbelastningar på en mellanlagringsserver

Så här ställer du in SQL Server-databasreplikation för en rapporteringsserver

SQL Server transaktionsreplikation: Hur man återinitierar en prenumeration med hjälp av en ”Replication support only” –TBA

SQL Server Replication övervakning och inställning varningar med PowerShell –TBA

  • författare
  • Senaste inlägg
Prashanth Jayaram
Jag är en DATABASTEKNIKER som har 11+ års rik, praktisk erfarenhet av databasteknik. Jag är Microsoft Certified Professional och backas upp med en examen i Master of Computer Application.
min specialitet ligger i att designa & implementera lösningar med hög tillgänglighet och plattformsoberoende DB Migration. De tekniker som för närvarande arbetar med är SQL Server, PowerShell, Oracle och MongoDB.
Visa alla inlägg av Prashanth Jayaram

Prashanth Jayaram
Senaste inlägg av Prashanth Jayaram (se alla)
  • en snabb översikt över databasrevisionen i SQL – 28 januari 2021
  • hur man gör konfigurera Azure Data Sync mellan Azure SQL-databaser och lokal SQL Server – 20 januari 2021
  • så här utför du Azure SQL database import/export – operationer med PowerShell-14 januari 2021