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 |
Skapande av publikationer
För att skapa en publikation, ange 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 körs: Snapshot Agent för alla publikationer; Log Reader Agent för alla transaktionella publikationer; Queue Reader Agent för transaktionella publikationer som tillåter uppdatering av prenumerationer.
- Ett namn och en beskrivning för publikationen.
För information om hur man arbetar med publikationer, se följande artiklar:
- Skapa en publikation
- Definiera en artikel
- Visa och ändra publikationsegenskaper
- Visa och ändra artikelegenskaper
- Ta bort en publikation
- Ta bort en artikel
Note
Att ta bort en artikel eller publikation tar inte bort objekt från prenumeranten.
Publicering av tabeller
Det vanligaste publicerade objektet är en tabell. Följande länkar ger mer information om 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 specificera vilka schemaobjekt som ska kopieras till prenumeranten, såsom deklarerad referensintegritet (primärnyckelbegränsningar, referensbegränsningar, unika begränsningar), index, användarens DML-triggers (DDL-triggers 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ödjer publicering av partitionerade tabeller och index. Stödnivån beror på vilken typ av replikation du använder och vilka alternativ du anger för publikationen och artiklarna som är kopplade till partitionerade tabeller. Mer information finns i Replikera partitionerade tabeller och index.
Publicering av lagrade procedurer
Alla typer av replikering tillåter dig att replikera definitioner av lagrade procedurer: satsen 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 procedurer replikeras till prenumeranter; ändringar i associerade sammansättningar görs inte.
Förutom att replikera definitionen av en lagrad procedur kan du med transaktionsreplikering replikera körningen av lagrade procedurer. Denna funktion är användbar för att replikera resultaten av underhållsorienterade lagrade procedurer som påverkar stora mängder data. Mer information finns i Publicera körning av lagrad procedur i transaktionsreplikering.
Publicerande vyer
Med alla typer av replikering kan du replikera vyer. Du kan kopiera vyn och dess tillhörande index (om det är en indexerad vy) till prenumeranten, men du måste också replikera bastabellen.
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.
Publicering av 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 tillhörande assemblyer replikeras inte.
Publicering av användardefinierade typer och aliastyper
Replikering behandlar kolumner som använder användardefinierade typer eller aliasdatatyper som andra kolumner och replikerar dem till prenumeranter. Processen kör satsen CREATE TYPE för varje replikerad typ hos prenumeranten innan den skapar tabellen. För användardefinierade typer kopierar replikering även den tillhörande assembleren till varje prenumerant. Replikering replikerar inte ändringar i användardefinierade typer och aliasdatatyper till prenumeranter.
Om du definierar en typ i en databas men inte refererar till den i några kolumner när du skapar en publikation, kopierar replikering inte typen till Prenumeranter. Om du senare skapar en kolumn av den typen i databasen och vill replikera den, måste du först manuellt kopiera typen (och den tillhörande assembleren 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 på det aktuella publicerade objektet vid en SQL Server Publisher, sprider replikering som standard den ändringen 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
Ha följande överväganden i åtanke när du publicerar databasobjekt:
Användare kan komma åt databasen under skapandet av publikationen och den initiala ögonblicksbilden, men det är bäst att skapa publikationer under tider med lägre aktivitet på Publisher.
Du kan inte byta namn på en databas efter att du skapat en publikation i den. För att byta namn på databasen måste du först ta bort replikering 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 beror på den nya artikeln, måste du ange en behandlingsordning för båda artiklarna genom att använda @processing_order-parameternsp_addmergearticle och sp_changemergearticle. Tänk dig 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 hos 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 inkludera följande tecken: % * [ ] | : " ? \ / <>.
Begränsningar för publiceringsobjekt
Det maximala antalet artiklar och kolumner du kan publicera varierar beroende på publikationstyp. Mer information finns i avsnittet "Replikeringsobjekt" i Maximum Capacity Specifications for SQL Server (Högsta kapacitetsspecifikationer för SQL Server).
Du kan inte publicera lagrade procedurer, vyer, triggers och användardefinierade funktioner som är definierade som MED KRYPTERING som en del av SQL Server-replikering.
Du kan replikera XML-schemasamlingar men ändringar replikeras inte efter den initiala snapshoten.
Tabeller som publicerats för transaktionsreplikering måste ha en primärnyckel. Om en tabell finns i en transaktionell replikeringspublikation kan du inte inaktivera några index som är kopplade till primärnyckelkolumner. Replikation kräver dessa index. Om du vill inaktivera ett index måste du först släppa tabellen från publikationen.
Bundna standardinställningar skapade med sp_bindefault (Transact-SQL) replikeras inte (bundna standardinställningar föråldras till förmån för standardinställningar skapade med DEFAULT nyckelordet eller ALTER TABLECREATE TABLE).
Du kan inte publicera funktioner som innehåller NOEXPAND-tipset om indexerade vyer i samma publikation som de refererade tabellerna och indexerade vyerna, på grund av ordningen 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.
Du kan ändra objektägaren via dialogrutan Artikel Egenskaper - <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 funktionaliteten i den versionen. Denna begränsning gäller både replikationsspecifik funktionalitet och produktens övergripande funktionalitet.
Sammanslagna publikationer använder en kompatibilitetsnivå, som avgör vilka funktioner du kan använda i en publikation och låter dig stödja prenumeranter som kör tidigare versioner av SQL Server.
Publiceringstabeller i mer än en publikation
Replication stödjer publicering av artiklar i flera publikationer, inklusive återpublicering av data, med följande begränsningar:
Om du publicerar en artikel både i en transaktionell publikation och en sammanslagningspublikation, sätt egenskapen @published_in_tran_pub till SANT för sammanslagningsartikeln. Mer information om hur du anger egenskaper finns i Visa och ändra publikationsegenskaper samt Visa och Ändra artikelegenskaper.
Sätt @published_in_tran_pub-egenskapen om en artikel är en del av en transaktionsprenumeration och ingår i en sammanslagningspublikation. Som standard förväntar transaktionell replikering tabeller hos prenumeranten att vara skrivskyddade. Om sammanslagen replikering gör dataändringar i en tabell i en transaktionsprenumeration kan icke-konvergens av data ske. För att undvika detta problem, ange vilken tabell som helst som endast nedladdning i sammanslagningspublikationen. Denna inställning 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.
Du kan inte publicera en artikel både i en sammanslagningspublikation och en transaktionspublikation med köande uppdateringsprenumerationer.
Du kan inte återpublicera artiklar som ingår i transaktionspublikationer som stödjer uppdatering av prenumerationer.
Om du publicerar en artikel i mer än en transaktionell publikation som stödjer köade uppdateringsprenumerationer, måste artikeln ha samma värde för följande egenskaper över 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 du publicerar en artikel i mer än en sammanslagningspublikation måste artikeln ha samma värde för följande egenskaper över 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 Utgivaridentitetsintervall @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).
Transaktionell replikering och ofiltrerad sammanslagningsreplikering stödjer publicering av en tabell i flera publikationer och sedan prenumerering inom en enda tabell i prenumerationsdatabasen (ofta kallat ett rollup-scenario). Rollup används ofta för att aggregera delmängder av data från flera platser i en tabell hos en central abonnent. Filtrerade sammanslagningspublikationer stödjer inte det centrala prenumerantscenariot. För sammanslagningsreplikering implementeras rollup vanligtvis genom en enda publikation med parameteriserade radfilter. Mer information finns i Parameteriserade radfilter.