Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
När du skapar en publikation väljer du de tabeller och andra databasobjekt som du vill publicera. Du kan publicera följande databasobjekt med hjälp av replikering.
| Databasobjekt | Replikering av ögonblicksbilder och transaktionsreplikering | Slå samman replikeringsmetod |
|---|---|---|
| Tables | X | X |
| Partitionerade tabeller | X | X |
| Lagrade procedurer – Definition (Transact-SQL och CLR) | X | X |
| Lagrade procedurer – körning (Transact-SQL och CLR) | X | no |
| Views | X | X |
| Indexerade vyer | X | X |
| Indexerade vyer som tabeller | X | no |
| Användardefinierade datatyper (CLR) | X | X |
| User-Defined Functions (Transact-SQL och CLR) | X | X |
| Aliasdatatyper | X | X |
| Fulltextindex | X | X |
| Schemaobjekt (begränsningar, index, DML-utlösare för användare, utökade egenskaper och sortering) | X | X |
Skapa publikationer
Om du vill skapa en publikation anger du följande information:
- Distributören.
- Platsen för ögonblicksbildfilerna.
- Publikationsdatabasen.
- Vilken typ av publikation som ska skapas (ögonblicksbild, transaktionell, transaktionell med uppdateringsbara prenumerationer eller sammanslagning).
- De data- och databasobjekt (artiklar) som ska ingå i publikationen.
- Statiska radfilter och kolumnfilter för alla typer av publikationer samt parameteriserade radfilter och kopplingsfilter för sammanslagningspublikationer.
- Schemat för Snapshot Agent.
- Konton under vilka följande agenter ska köras: Snapshot Agent för alla publikationer, Log Reader Agent för alla transaktionspublikationer, Köläsaragenten för transaktionspublikationer som tillåter uppdatering av prenumerationer.
- Ett namn och en beskrivning för publikationen.
Information om hur du arbetar med publikationer finns i följande avsnitt:
- Skapa en publikation
- Definiera en artikel
- Visa och ändra publikationsegenskaper
- Visa och ändra artikelegenskaper
- Ta bort en publikation
- Ta bort en artikel
Note
Om du tar bort en artikel eller publikation tas inga objekt bort från prenumeranten.
Tabeller för publicering
Det vanligaste publicerade objektet är en tabell. Följande länkar innehåller ytterligare information om områden som rör publiceringstabeller:
- Filtrera publicerade data
- Artikelalternativ för transaktionsreplikering
- Artikelalternativ för sammanslagningsreplikering
- Kopiera identitetskolumner
När du publicerar en tabell för replikering kan du ange vilka schemaobjekt som ska kopieras till Prenumeranten, till exempel deklarerad referensintegritet (primära nyckelbegränsningar, referensbegränsningar, unika begränsningar), index, DML-utlösare (DDL-utlösare kan inte replikeras), utökade egenskaper och sortering. Utökade egenskaper replikeras endast i den inledande synkroniseringen mellan utgivaren och prenumeranten. Om du lägger till eller ändrar en utökad egenskap efter den inledande synkroniseringen replikeras inte ändringen.
Information om hur du anger schemaalternativ finns i Ange schemaalternativ eller SchemaOption.
Partitionerade tabeller och index
Replikering stöder publicering av partitionerade tabeller och index. Stödnivån beror på vilken typ av replikering som används och vilka alternativ du anger för publikationen och de artiklar som är associerade med partitionerade tabeller. Mer information finns i Replikera partitionerade tabeller och index.
Publicera lagrade procedurer
Med alla typer av replikering kan du replikera lagrade procedurdefinitioner: CREATE PROCEDURE kopieras till varje prenumerant. När det gäller clr-lagrade procedurer (Common Language Runtime) kopieras även den associerade sammansättningen. Ändringar i procedurerna repliceras till prenumeranter; ändringar i tillhörande sammansättningar repliceras inte.
Förutom att replikera definitionen av en lagrad procedur kan du med transaktionsreplikering replikera körningen av lagrade procedurer. Detta är användbart när du replikerar resultatet av underhållsorienterade lagrade procedurer som påverkar stora mängder data. Mer information finns i Publicera körning av lagrad procedur i transaktionsreplikering.
Publiceringsvyer
Med alla typer av replikering kan du replikera vyer. Vyn (och dess tillhörande index, om det är en indexerad vy) kan kopieras till prenumeranten, men bastabellen måste också replikeras.
För indexerade vyer kan transaktionsreplikering också replikera den indexerade vyn som en tabell i stället för en vy, vilket eliminerar behovet av att även replikera bastabellen. Om du vill göra detta anger du något av alternativen "indexerad vyloggbaserad" för parametern @typeför sp_addarticle (Transact-SQL). Mer information om hur du använder sp_addarticle finns i Definiera en artikel.
Publicera användardefinierade funktioner
Instruktioner CREATE FUNCTION för CLR-funktioner och Transact-SQL funktioner kopieras till varje prenumerant. När det gäller CLR-funktioner kopieras även den associerade sammansättningen. Ändringar i funktioner replikeras till prenumeranter; ändringar i associerade assemblyer gör det inte.
Publicering av användardefinierade typer och aliastyper
Kolumner som använder användardefinierade typer eller aliasdatatyper replikeras till Prenumeranter som andra kolumner. Instruktionen CREATE TYPEför varje replikerad typ körs i Prenumeranten innan tabellen skapas. När det gäller användardefinierade typer kopieras även den associerade sammansättningen till varje prenumerant. Ändringar av användardefinierade typer och aliasdatatyper replikeras inte till prenumeranter.
Om en typ definieras i en databas, men den inte refereras i några kolumner när en publikation skapas, kopieras inte typen till Prenumeranter. Om du sedan skapar en kolumn av den typen i databasen och vill replikera den måste du först kopiera typen (och den associerade sammansättningen för en användardefinierad typ) till varje prenumerant.
Publicering av fulltextindex
Satsen CREATE FULLTEXT INDEX kopieras till varje prenumerant och fulltextindexet skapas hos prenumeranten. Ändringar som görs i fulltextindex med hjälp av ALTER FULLTEXT INDEX replikeras inte.
Göra schemaändringar i publicerade objekt
Replikering stöder en mängd olika schemaändringar för publicerade objekt. När du gör någon av följande schemaändringar för lämpligt publicerat objekt på en SQL Server Publisher sprids ändringen som standard till alla SQL Server Prenumeranter:
ALTER TABLE
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
ALTER TRIGGER
Mer information finns i Göra schemaändringar i publikationsdatabaser.
Överväganden för publicering
Tänk på följande när du publicerar databasobjekt:
Databasen är tillgänglig för användare när publikationen skapas och den första ögonblicksbilden skapas, men det är lämpligt att skapa publikationer under tider med lägre aktivitet på Publisher.
Det går inte att byta namn på en databas när en publikation har skapats i den. Om du vill byta namn på den måste du först ta bort replikeringen från databasen.
Om du publicerar ett databasobjekt som är beroende av ett eller flera andra databasobjekt måste du publicera alla refererade objekt. Om du till exempel publicerar en vy som är beroende av en tabell måste du även publicera tabellen.
Note
Om du lägger till en artikel i en sammanslagningspublikation och en befintlig artikel är beroende av den nya artikeln måste du ange en bearbetningsordning för båda artiklarna med parametern @processing_orderför sp_addmergearticle och sp_changemergearticle. Tänk på följande scenario: du publicerar en tabell men du publicerar inte en funktion som tabellen refererar till. Om du inte publicerar funktionen kan tabellen inte skapas i Prenumeranten. När du lägger till funktionen i publikationen: ange värdet 1 för parametern @processing_orderför sp_addmergearticle. och ange värdet 2 för parametern @processing_orderför sp_changemergearticle och ange tabellnamnet för parametern @article. Den här bearbetningsordningen säkerställer att du skapar funktionen hos prenumeranten före tabellen som är beroende av funktionen. Du kan använda olika tal för varje artikel så länge talet för funktionen är lägre än talet för tabellen.
Publikationsnamn kan inte innehålla följande tecken: % * [ ] | : " ? \ / <>.
Begränsningar för publiceringsobjekt
Det maximala antalet artiklar och kolumner som kan publiceras skiljer sig åt beroende på publikationstyp. Mer information finns i avsnittet "Replikeringsobjekt" i Maximum Capacity Specifications for SQL Server (Högsta kapacitetsspecifikationer för SQL Server).
Lagrade procedurer, vyer, utlösare och användardefinierade funktioner som definieras som WITH ENCRYPTION kan inte publiceras som en del av SQL Server replikering.
XML-schemasamlingar kan replikeras men ändringarna replikeras inte efter den första ögonblicksbilden.
Tabeller som publicerats för transaktionsreplikering måste ha en primärnyckel. Om en tabell finns i en transaktionsreplikeringspublikation kan du inte inaktivera index som är associerade med primärnyckelkolumner. Dessa index krävs av replikering. Om du vill inaktivera ett index måste du först släppa tabellen från publikationen.
Bundna standardvärden som skapas med sp_bindefault (Transact-SQL) replikeras inte (bundna standardvärden är inaktuella till förmån för standardvärden som skapats med nyckelordet DEFAULTALTER TABLE eller CREATE TABLE).
Funktioner som innehåller NOEXPAND-tipset för indexerade vyer kan inte publiceras i samma publikation som de refererade tabellerna och indexerade vyerna, på grund av den ordning i vilken distributionsagenten levererar dem. Om du vill undvika det här problemet placerar du tabellen och den indexerade vyn i en första publikation och lägger till funktioner som innehåller NOEXPAND-tipset om indexerade vyer i en andra publikation som du publicerar när den första publikationen har slutförts. Du kan också skapa skript för dessa funktioner och leverera skriptet med hjälp av parametern @post_snapshot_scriptför sp_addpublication.
Scheman och objektägarskap
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, ögonblickspublikationer och transaktionspublikationer är objektägaren på Prenumeranten som standard densamma som ägaren av motsvarande objekt hos utgivaren. Om scheman som äger objekt inte finns hos 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 standardinställs till den ägare som är associerad med användarkontot som används av Distributionsagenten eller Mergeagenten 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.
Publicera data till prenumeranter som kör tidigare versioner av SQL Server
Om du publicerar till en prenumerant som kör en tidigare version av SQL Server är du begränsad till funktionerna i den versionen, både när det gäller replikeringsspecifika funktioner och funktionaliteten för produkten som helhet.
Sammanfoga publikationer använder en kompatibilitetsnivå som avgör vilka funktioner som kan användas i en publikation och gör att du kan stödja prenumeranter som kör tidigare versioner av SQL Server.
Publicera tabeller i mer än en publikation
Replikering stöder publicering av artiklar i flera publikationer (inklusive återpublicering av data) med följande begränsningar:
Om en artikel publiceras i en transaktionspublikation och en sammanslagningspublikation kontrollerar du att egenskapen @published_in_tran_pub är inställd på TRUE för kopplingsartikeln. Mer information om hur du anger egenskaper finns i Visa och ändra publikationsegenskaper samt Visa och Ändra artikelegenskaper.
Du bör också ange egenskapen @published_in_tran_pub om en artikel ingår i en transaktionsprenumeration och ingår i en sammanslagningspublikation. Om så är fallet bör du vara medveten om att transaktionsreplikering som standard förutsätter att tabeller hos prenumeranten behandlas som skrivskyddade; om sammanfogningsreplikering ändrar data i en tabell i en transaktionsprenumeration kan bristande datakonvergens uppstå. För att undvika den här möjligheten rekommenderar vi att en sådan tabell anges som endast nedladdning i sammanslagningspublikationen. Detta förhindrar att en sammanslagningsprenumerant laddar upp dataändringar till tabellen. Mer information finns i Optimera prestandan för sammanslagningsreplikering med artiklar endast för nedladdning.
Det går inte att publicera en artikel i både en sammanslagningspublikation och en transaktionspublikation med prenumerationer i kö.
Artiklar som ingår i transaktionspublikationer som stöder uppdatering av prenumerationer kan inte publiceras på nytt.
Om en artikel publiceras i mer än en transaktionspublikation som stöder köade uppdateringsprenumerationer måste följande egenskaper ha samma värde för artikeln i alla publikationer:
Fastighet Parameter i sp_addarticle Hantering av identitetsintervall @auto_identity_range (inaktuell) och @identityrangemangementoption Utgivaridentitetsintervall @pub_identity_range Identitetsområde @identity_range Tröskelvärde för identitetsintervall @threshold Mer information om dessa parametrar finns i sp_addarticle (Transact-SQL).
Om en artikel publiceras i mer än en sammanslagningspublikation måste följande egenskaper ha samma värde för artikeln i alla publikationer:
Fastighet Parameter i sp_addmergearticle Kolumnspårning @column_tracking Schemaalternativ @schema_option Kolumnfiltrering @vertical_partition Alternativ för prenumerantuppladdning @subscriber_upload_options Spårning av villkorliga raderingar @delete_tracking Felkompensation @compensate_for_errors Hantering av identitetsintervall @auto_identity_range (inaktuell) och @identityrangemangementoption Utgivaridentitetsomfång @pub_identity_range Identitetsområde @identity_range Tröskelvärde för identitetsintervall @threshold Partitionsalternativ @partition_options Strömning av blobkolumner @stream_blob_columns Filtertyp @filter_type (parameter i sp_addmergefilter) Mer information om dessa parametrar finns i sp_addmergearticle (Transact-SQL) och sp_addmergefilter (Transact-SQL).
Transaktionsreplikering och ofiltrerad sammanfogningsreplikering har stöd för att publicera en tabell i flera publikationer och sedan prenumerera på dessa inom en enda tabell i prenumerationsdatabasen (vanligen kallat ett rollup-scenario). Sammanslagning används ofta för att aggregera delmängder av data från flera platser i en tabell hos en central prenumerant. Filtrerade sammanslagningspublikationer stöder inte det centrala prenumerantscenariot. För sammanslagningsreplikering implementeras aggregering vanligtvis med en enda publikation med parametriserade radfilter. Mer information finns i Parameteriserade radfilter.