Dela via


Vanliga frågor och svar för replikeringsadministratörer

gäller för:SQL ServerAzure SQL Managed Instance

Följande frågor och svar ger vägledning om en mängd olika uppgifter som administratörer av replikerade databaser står inför.

Konfigurera replikering

Måste aktiviteten stoppas i en databas när den publiceras?

Nej. Aktiviteten kan fortsätta i en databas medan en publikation skapas. Tänk på att det kan vara resursintensivt att skapa en ögonblicksbild, så det är bäst att generera ögonblicksbilder under perioder med lägre aktivitet i databasen (som standard genereras en ögonblicksbild när du slutför guiden Ny publikation).

Är tabeller låsta under generering av ögonblicksbilder?

Hur lång tid låsen tas beror på vilken typ av replikering som används:

  • För sammanslagningspublikationer tar ögonblicksbildsagenten inga lås.

  • För transaktionspublikationer tar Snapshot Agent som standard endast lås under den inledande fasen av genereringen av ögonblicksbilder.

  • För ögonblicksbildspublikationer låser sig Ögonblicksbildsagenten under hela processen för generering av ögonblicksbilder.

Eftersom lås hindrar andra användare från att uppdatera tabellerna bör Ögonblicksbildsagenten schemaläggas att köras under perioder med lägre aktivitet i databasen, särskilt för ögonblicksbildspublikationer.

När är en tillgänglig prenumeration; när kan prenumerationsdatabasen användas?

En prenumeration är tillgänglig när ögonblicksbilden har tillämpats på prenumerationsdatabasen. Även om prenumerationsdatabasen är tillgänglig före detta bör databasen inte användas förrän efter att ögonblicksbilden har tillämpats. Använd Replikeringsövervakaren för att kontrollera statusen för generering och program för ögonblicksbilder:

Vad händer om ögonblicksbildsagenten inte har slutförts när distributions- eller sammanslagningsagenten startar?

Det orsakar inget fel om distributionsagenten eller sammanslagningsagenten körs samtidigt som ögonblicksbildsagenten. Du måste dock vara medveten om följande:

  • Om distributionsagenten eller sammanslagningsagenten är konfigurerad att köras kontinuerligt tillämpar agenten ögonblicksbilden automatiskt när ögonblicksbildsagenten har slutförts.

  • Om distributionsagenten eller sammanslagningsagenten är konfigurerad att köras enligt ett schema eller på begäran, och det inte finns någon tillgänglig ögonblicksbild när agenten körs, stängs agenten av med ett meddelande om att en ögonblicksbild ännu inte är tillgänglig. Du måste köra agenten igen för att tillämpa ögonblicksbilden när ögonblicksbildsagenten har slutförts. Mer information om agenter som körs finns i Synkronisera en push-prenumeration, synkronisera en pull-prenumeration och körbara begrepp för replikeringsagent.

Ska jag skripta min replikeringskonfiguration?

Ja. Skriptning av replikeringskonfigurationen är en viktig del av en haveriberedskapsplan för en replikeringstopologi. Mer information om skript finns i Skriptreplikering.

Vilken återställningsmodell krävs på en replikerad databas?

Replikering fungerar korrekt med någon av återställningsmodellerna: enkel, massloggad eller fullständig. Sammanslagningsreplikering spårar ändringar genom att lagra information i metadatatabeller. Transaktionsreplikering spårar ändringar genom att markera transaktionsloggen, men den här markeringsprocessen påverkas inte av återställningsmodellen.

Varför lägger replikering till en kolumn i replikerade tabeller; tas den bort om tabellen inte publiceras?

Om du vill spåra ändringar måste sammanfogningsreplikering och transaktionsreplikering med prenumerationer i kö kunna identifiera varje rad i varje publicerad tabell unikt. Så här gör du:

  • Sammanslagningsreplikering lägger till kolumnen rowguid i varje tabell, såvida inte tabellen redan har en kolumn av datatypen uniqueidentifier med egenskapen ROWGUIDCOL (i vilket fall den här kolumnen används). Om tabellen tas bort från publikationen tas kolumnen rowguid bort. Om en befintlig kolumn användes för spårning tas kolumnen inte bort.

  • Om en transaktionspublikation stöder uppdatering av prenumerationer i kö lägger replikering till kolumnen msrepl_tran_version i varje tabell. Om tabellen tas bort från publikationen tas inte kolumnen msrepl_tran_version bort.

  • Ett filter får inte innehålla den rowguidcol som används av replikeringen för att identifiera rader. Som standard är detta kolumnen som lades till när du konfigurerade sammanslagningsreplikering och heter rowguid.

Hur hanterar jag begränsningar för publicerade tabeller?

Det finns ett antal problem att tänka på när det gäller begränsningar för publicerade tabeller:

  • Transaktionsreplikering kräver en primär nyckelbegränsning för varje publicerad tabell. Sammanslagningsreplikering kräver ingen primärnyckel, men om det finns en nyckel måste den replikeras. Replikering av ögonblicksbilder kräver ingen primärnyckel.

  • Som standard replikeras primära nyckelbegränsningar, index och kontrollbegränsningar till Prenumeranter.

  • Alternativet INTE FÖR REPLIKERING anges som standard för begränsningar för utländska nycklar och kontrollbegränsningar; begränsningarna tillämpas för användaråtgärder men inte för agentåtgärder.

Information om hur du ställer in schemaalternativ som styr om begränsningar replikeras finns i Ange schemaalternativ.

Hur hanterar jag identitetskolumner?

Replikering tillhandahåller automatisk hantering av identitetsintervall för replikeringstopologier som innehåller uppdateringar hos prenumeranten. Mer information finns i Replikera identitetskolumner.

Kan samma objekt publiceras i olika publikationer?

Ja, men med vissa begränsningar. Mer information finns i avsnittet "Publicera tabeller i mer än en publikation" i avsnittet Publicera data och databasobjekt.

Kan flera publikationer använda samma distributionsdatabas?

Ja. Det finns inga begränsningar för antalet eller typerna av publikationer som kan använda samma distributionsdatabas. Alla publikationer från en viss utgivare måste använda samma distributörs- och distributionsdatabas.

Om du har flera publikationer kan du konfigurera flera distributionsdatabaser på distributören för att säkerställa att data som flödar genom varje distributionsdatabas kommer från en enda publikation. Använd dialogrutan Egenskaper för distributör eller sp_adddistributiondb (Transact-SQL) för att lägga till en distributionsdatabas. Mer information om hur du öppnar dialogrutan finns i Visa och ändra egenskaper för distributör och utgivare.

Hur hittar jag information om distributören och utgivaren, till exempel vilka objekt i en databas som publiceras?

Den här informationen är tillgänglig via SQL Server Management Studio och ett antal lagrade procedurer för replikering. Mer information finns i Informationsskript för distributör och utgivare.

Krypterar replikering data?

Nej. Replikering krypterar inte data som lagras i databasen eller överförs via nätverket. Mer information finns i avsnittet "Kryptering" i avsnittet Visa och ändra säkerhetsinställningar för replikering.

Hur replikerar jag data via Internet?

Replikera data via Internet med hjälp av:

Alla typer av Microsoft SQL Server-replikering kan replikera data via ett VPN, men du bör överväga webbsynkronisering om du använder sammanslagningsreplikering.

Återupptar replikeringen om en anslutning avbryts

Ja. Replikeringsbearbetningen återupptas vid den tidpunkt då den slutade om en anslutning avbryts. Om du använder sammanslagningsreplikering över ett opålitligt nätverk bör du överväga att använda logiska poster, vilket säkerställer att relaterade ändringar bearbetas som en enhet. Mer information finns i Gruppera ändringar i relaterade rader med logiska poster.

Fungerar replikering över anslutningar med låg bandbredd? Använder den komprimering?

Ja, replikering fungerar över anslutningar med låg bandbredd. För anslutningar via TCP/IP använder den komprimering som tillhandahålls av protokollet men ger inte ytterligare komprimering. För webbsynkroniseringsanslutningar via HTTPS använder den komprimering som tillhandahålls av protokollet och även ytterligare komprimering av XML-filerna som används för att replikera ändringar.

Kan jag konfigurera replikering om jag ansluter till servern med hjälp av IP-adressen?

Nej, replikeringen fungerar bara när du använder det faktiska servernamnet. Från och med SQL Server Management Studio (SSMS) 18.0 (och senare versioner) kan replikering konfigureras med hjälp av det faktiska servernamnet och portnumret.

Inloggningar och objektägarskap

Replikeras inloggningar och lösenord?

Nej. Du kan skapa ett SSIS-paket för att överföra inloggningar och lösenord från en utgivare till en eller flera prenumeranter.

Vad är scheman och hur replikeras de?

Från och med Microsoft SQL Server 2005 (9.x) har schemat två betydelser:

  • Definitionen av ett objekt, till exempel en CREATE TABLE -instruktion. Som standard kopierar replikeringen definitionerna av alla replikerade objekt till Prenumeranten.

  • Namnområdet där ett objekt skapas: <Databas>.<Schema>.<Objekt>. Scheman definieras med hjälp av -instruktionen CREATE SCHEMA .

  • Replikering har följande standardbeteende i guiden Ny publikation med avseende på scheman och objektägarskap:

  • För artiklar i sammanslagningspublikationer med en kompatibilitetsnivå på 90 eller högre är publiceringar av ögonblicksbilder och transaktionspublikationer: som standard är objektägaren på Prenumeranten samma som ägaren av motsvarande objekt på utgivaren. Om de scheman som äger objekt inte finns i Prenumeranten skapas de automatiskt.

  • För artiklar i sammanslagningspublikationer med en kompatibilitetsnivå som är lägre än 90: som standard lämnas ägaren tom och anges som dbo när objektet skapas på Prenumeranten.

  • För artiklar i Oracle-publikationer: som standard anges ägaren som dbo.

  • För artiklar i publikationer som använder ögonblicksbilder i teckenläge (som används för icke-SQL Server-prenumeranter och SQL Server Compact-prenumeranter): som standard lämnas ägaren tom. Ägaren använder som standard den ägare som är associerad med det konto som används av distributionsagenten eller sammanslagningsagenten för att ansluta till prenumeranten.

Objektägaren kan ändras via dialogrutan Artikelegenskaper – <artikel> och genom följande lagrade procedurer: sp_addarticle, sp_addmergearticle, sp_changearticle och sp_changemergearticle. Mer information finns i Visa och ändra publikationsegenskaper, Definiera en artikel och Visa och ändra artikelegenskaper.

Hur kan bidrag i prenumerationsdatabasen konfigureras för att matcha bidrag i publikationsdatabasen?

Som standard kör replikering inte GRANT-instruktioner på prenumerationsdatabasen. Om du vill att behörigheterna för prenumerationsdatabasen ska matcha dem i publikationsdatabasen använder du någon av följande metoder:

Vad händer med behörigheter som beviljas i en prenumerationsdatabas om en prenumeration initieras igen?

Som standard tas objekt i Prenumeranten bort och återskapas när en prenumeration initieras igen, vilket gör att alla beviljade behörigheter för dessa objekt tas bort. Det finns två sätt att hantera detta:

  • Använd bidragen igen efter ominitieringen med hjälp av de tekniker som beskrivs i föregående avsnitt.

  • Ange att objekt inte ska tas bort när prenumerationen initieras igen. Före ominitiering kan du antingen:

    • Kör sp_changearticle eller sp_changemergearticle. Ange värdet "pre_creation_cmd" (sp_changearticle) eller "pre_creation_command" (sp_changemergearticle) för parametern @property och värdet "none", "delete" eller "truncate" för parametern @value.

    • I dialogrutan Artikelegenskaper – <artikel> i avsnittet Målobjekt väljer du värdet Behåll befintligt objekt oförändrat, Ta bort data. Om artikeln har ett radfilter tar du bara bort data som matchar filtret. eller Trunkera alla data i det befintliga objektet för alternativet Åtgärd om namnet används. Mer information om hur du öppnar den här dialogrutan finns i Visa och ändra publikationsegenskaper.

Databasunderhåll

Varför kan jag inte köra TRUNCATE TABLE i en publicerad tabell?

TRUNCATE TABLE är en DDL-instruktion som inte loggar enskilda radborttagningar och inte utlöser DML-utlösare. Det är inte tillåtet eftersom replikeringen inte kan spåra de ändringar som orsakas av åtgärden: transaktionsreplikering spårar ändringar via transaktionsloggen. sammanfoga replikering spårar ändringar via DML-utlösare i publicerade tabeller.

Vad är effekten av att köra ett massinfogningskommando på en replikerad databas?

För transaktionsreplikering spåras och replikeras massinfogningar som andra infogningar. För sammanslagningsreplikering måste du se till att metadata för ändringsspårning uppdateras korrekt.

Finns det några replikeringsöverväganden för säkerhetskopiering och återställning?

Ja. Det finns ett antal särskilda överväganden för databaser som ingår i replikeringen. Mer information finns i Säkerhetskopiera och återställa replikerade databaser.

Påverkar replikeringen transaktionsloggens storlek?

Sammanslagningsreplikering och replikering av ögonblicksbilder påverkar inte transaktionsloggens storlek, men transaktionsreplikering kan göra det. Om en databas innehåller en eller flera transaktionspublikationer trunkeras inte loggen förrän alla transaktioner som är relevanta för publikationerna har levererats till distributionsdatabasen. Om transaktionsloggen blir för stor och loggläsaragenten körs enligt ett schema bör du överväga att förkorta intervallet mellan körningar. Eller ange att den ska köras i kontinuerligt läge. Om den är inställd på att köras i kontinuerligt läge (standard) kontrollerar du att den körs. Mer information om hur du kontrollerar status för Log Reader Agent finns i Visa information och utföra uppgifter med hjälp av Replikeringsövervakaren.

Om du har angett alternativet "synkronisera med säkerhetskopiering" i publikationsdatabasen eller distributionsdatabasen trunkeras inte transaktionsloggen förrän alla transaktioner har säkerhetskopierats. Om transaktionsloggen blir för stor och du har den här alternativuppsättningen bör du överväga att förkorta intervallet mellan säkerhetskopieringar av transaktionsloggar. Mer information om hur du säkerhetskopierar och återställer databaser som ingår i transaktionsreplikering finns i Strategier för säkerhetskopiering och återställning av ögonblicksbilder och transaktionsreplikering.

Hur återskapar jag index eller tabeller i replikerade databaser?

Det finns en mängd olika mekanismer för att återskapa index. De kan alla användas utan särskilda överväganden för replikering, med följande undantag: primära nycklar krävs för tabeller i transaktionspublikationer, så du kan inte släppa och återskapa primära nycklar i dessa tabeller.

Hur lägger jag till eller ändrar index för publicerings- och prenumerationsdatabaser?

Index kan läggas till i Publisher eller Prenumeranter utan några särskilda överväganden för replikering (tänk på att index kan påverka prestanda). CREATE INDEX och ALTER INDEX replikeras inte, så om du lägger till eller ändrar ett index på till exempel Publisher måste du göra samma tillägg eller ändring i Prenumeranten om du vill att det ska visas där.

Hur flyttar eller byter jag namn på filer för databaser som ingår i replikeringen?

I versioner av SQL Server före SQL Server 2005 (9.x) krävs det att du kopplar från och kopplar om databasen genom att flytta eller byta namn på databasfilerna. Eftersom en replikerad databas inte kan kopplas från måste replikeringen först tas bort från dessa databaser. Från och med SQL Server 2005 (9.x) kan du flytta eller byta namn på filer utan att koppla från och ansluta databasen igen, utan att replikeringen påverkas. Mer information om hur du flyttar och byter namn på filer finns i ALTER DATABASE (Transact-SQL).

Hur släpper jag en tabell som replikeras?

Släpp först artikeln från publikationen med hjälp av sp_droparticle, sp_dropmergearticle eller dialogrutan Publikationsegenskaper – <publikation> och släpp den sedan från databasen med hjälp av DROP <Object>. Du kan inte ta bort artiklar från ögonblicksbilder eller transaktionspublikationer när prenumerationer har lagts till. du måste släppa prenumerationerna först. Mer information finns i Lägga till artiklar i och ta bort artiklar från befintliga publikationer.

Hur lägger jag till eller släpper kolumner i en publicerad tabell?

SQL Server stöder en mängd olika schemaändringar på publicerade objekt, inklusive att lägga till och ta bort kolumner. Kör till exempel ALTER TABLE … DROP COLUMN på Publisher och -instruktionen replikeras till Prenumeranter och körs sedan för att släppa kolumnen. Prenumeranter som kör versioner av SQL Server före SQL Server 2005 (9.x) har stöd för att lägga till och släppa kolumner via de lagrade procedurerna sp_repladdcolumn och sp_repldropcolumn. Mer information finns i Göra schemaändringar i publikationsdatabaser.

Replikeringsunderhåll

Hur avgör jag om data på Prenumeranter synkroniseras med data i Publisher?

Använd validering. Validering rapporterar om en viss prenumerant synkroniseras med utgivaren. Mer information finns i Verifiera replikerade data. Verifieringen innehåller inte information om vilka rader om några som inte synkroniseras korrekt, men det gör verktyget tablediff .

Hur lägger jag till en tabell i en befintlig publikation?

Det är inte nödvändigt att stoppa aktiviteten i publikations- eller prenumerationsdatabaserna för att lägga till en tabell (eller ett annat objekt). Lägg till en tabell i en publikation via dialogrutan Publikationsegenskaper – <Publikation> eller de lagrade procedurerna sp_addarticle och sp_addmergearticle. Mer information finns i Lägga till artiklar i och ta bort artiklar från befintliga publikationer.

Hur tar jag bort en tabell från en publikation?

Ta bort en tabell från publikationen med hjälp av sp_droparticle, sp_dropmergearticle eller dialogrutan Publikationsegenskaper – <publikation> . Du kan inte ta bort artiklar från ögonblicksbilder eller transaktionspublikationer när prenumerationer har lagts till. du måste släppa prenumerationerna först. Mer information finns i Lägga till artiklar i och ta bort artiklar från befintliga publikationer.

Vilka åtgärder kräver att prenumerationer initieras på nytt?

Det finns ett antal artikel- och publikationsändringar som kräver att prenumerationer initieras på nytt. Mer information finns i Ändra egenskaper för publikation och artikel.

Vilka åtgärder gör att ögonblicksbilder ogiltigförklaras?

Det finns ett antal artikel- och publikationsändringar som ogiltigförklarar ögonblicksbilder och kräver att en ny ögonblicksbild genereras. Mer information finns i Ändra egenskaper för publikation och artikel.

Hur tar jag bort replikering?

Vilka åtgärder som krävs för att ta bort replikering från en databas beror på om databasen fungerade som en publikationsdatabas, prenumerationsdatabas eller båda.

Hur avgör jag om det finns transaktioner eller rader som ska replikeras?

För transaktionsreplikering använder du lagrade procedurer eller fliken Ej distribuerade kommandon i Replikeringsövervakaren. Mer information finns i Visa replikerade kommandon och annan information i distributionsdatabasen (replikering Transact-SQL programmering) och Visa information och utföra uppgifter med replikeringsövervakaren.

Använd den lagrade proceduren sp_showpendingchanges för sammanslagningsreplikering. Mer information finns i sp_showpendingchanges (Transact-SQL).

Hur långt efter ligger distributionsagenten? Ska jag initiera om?

Använd den sp_replmonitorsubscriptionpendingcmds lagrade proceduren eller fliken Ej distribuerade kommandon i Replikeringsövervakaren. Den lagrade proceduren och fliken visar:

  • Antalet kommandon i distributionsdatabasen som inte har levererats till den valda prenumeranten. Ett kommando består av en Transact-SQL DML-instruktion (datamanipuleringsspråk) eller en DDL-instruktion (Data Definition Language).

  • Den uppskattade tiden för att leverera kommandon till prenumeranten. Om det här värdet är större än den tid som krävs för att generera och tillämpa en ögonblicksbild på prenumeranten kan du överväga att initiera prenumeranten igen. Mer information finns i Initiera prenumerationer igen.

Mer information finns i sp_replmonitorsubscriptionpendingcmds (Transact-SQL) och Visa information och utföra uppgifter med replikeringsövervakaren.

Replikering och andra databasfunktioner

Fungerar replikering tillsammans med loggöverföring och databasspegling?

Fungerar replikeringen tillsammans med klustring?

Ja. Inga särskilda överväganden krävs eftersom alla data lagras på en uppsättning diskar i klustret.

Hur felsöker jag en lösning från tredje part baserat på SQL-replikering?

Vi rekommenderar att du kontaktar tredjepartsleverantören för att få support. Om problemet vanligtvis är isolerat av leverantören för att vara ett kärnreplikeringsproblem som levereras med SQL Server, är Microsoft Support involverat för att hjälpa till ytterligare.