Určení vlastností slučovací replikace

platí pro:SQL Server

Toto téma vysvětluje, jak zadat různé vlastnosti pro replikaci sloučení.

Článek o sloučení je pouze ke stažení

Články určené jen ke stažení jsou určené pro aplikace s daty, která nejsou aktualizována u odběratelů. Další informace naleznete v tématu Optimalizace výkonu slučovací replikace pomocí článků pouze ke stažení.

Considerations

  • Pokud určíte, že se článek stáhne až po inicializaci předplatných, musí být znovu inicializována všechna předplatná klienta, která obdržela tento článek. Předplatná serveru nemusí být znovu inicializována. Další informace o vlivu změn vlastností naleznete v tématu Změnit publikaci a vlastnosti článku.

Použití aplikace SQL Server Management Studio

Na stránce Články

Na stránce Články v Průvodci vytvořením publikace vyberte tabulku a zaškrtněte políčko Zvýrazněná tabulka je pouze ke stažení.

Na kartě Vlastnosti ve Vlastnostech článku

  1. Na stránce Články v Průvodci vytvořením publikace nebo Vlastnosti publikace - <Publikace> dialogové okno, vyberte tabulku a klepněte na tlačítko Vlastnosti článku.

  2. Klikněte na Nastavit vlastnosti zvýrazněného článku tabulky nebo nastavte vlastnosti všech článků tabulky.

  3. V části Cílový objekt na kartě Vlastnosti v dialogovém okně Vlastnosti článku - <Článek> zadejte jednu z následujících hodnot pro směr synchronizace:

    • Stáhnout do odběratele, zakázat změny odběratele
    • Stáhnout do odběratele, povolit změny odběratele
  4. Pokud jste v dialogovém okně Vlastnosti publikace - <Publikace> , kliknutím na tlačítko OK uložte a zavřete dialogové okno.

Použijte Transact-SQL

Nový článek

  1. Spusťte sp_addmergearticle, zadejte hodnotu 1 nebo 2 parametru @subscriber_upload_options. Čísla odpovídají následujícímu chování:

    • 0 – Žádná omezení (výchozí). Změny provedené u odběratele se nahrají do Publisher.
    • 1 – Změny jsou povoleny u odběratele, ale nenahrají se do Publisher.
    • 2 . Změny nejsou u odběratele povoleny.

    Note

    Pokud je zdrojová tabulka článku již publikována v jiné publikaci, musí být hodnota @subscriber_upload_options pro oba články stejná.

Existující článek

  1. Pokud chcete zjistit, jestli je článek jen ke stažení, spusťte sp_helpmergearticle a ověřte hodnotu upload_options článku v sadě výsledků.

  2. Pokud je hodnota vrácená v kroku 1 0, spusťte sp_changemergearticle, zadejte hodnotu subscriber_upload_options pro @property, hodnotu 1 pro @force_invalidate_snapshot a @force_reinit_subscriptionhodnotu 1 nebo 2 pro @value, která odpovídá následujícímu chování:

    • 1 – Změny jsou povoleny u odběratele, ale nenahrají se do Publisher.

    • 2 - Změny nejsou u předplatitele povoleny.

      Note

      Pokud je zdrojová tabulka článku již publikována v jiné publikaci, musí být chování jen pro stahování stejné pro oba články.

Řešení interaktivních konfliktů

Replikace serveru Microsoft SQL Server poskytuje interaktivní řešič, který umožňuje ručně řešit konflikty během synchronizace na vyžádání v nástroji Správce synchronizace systému Microsoft Windows. Po povolení interaktivního řešení pomocí Interaktivního překladače vyřešte konflikty interaktivně během synchronizace. Nástroj Interactive Resolver je k dispozici ve Správci synchronizace systému Microsoft Windows. Další informace naleznete v tématu Synchronizace předplatného pomocí správce synchronizace Windows (Windows Správce synchronizace).

Recommendations

  • Pokud se synchronizace provádí mimo Windows Správce synchronizace (jako plánovaná synchronizace nebo synchronizace na vyžádání v SQL Server Management Studio nebo monitorování replikace), konflikty se vyřeší automaticky bez zásahu uživatele pomocí výchozího řešení konfliktů určeného pro článek. Další informace najdete v tématu Řešení interaktivních konfliktů.

Použití aplikace SQL Server Management Studio

Povolení interaktivního řešení konfliktů pro článek

  1. Na stránce Články v Průvodci novou publikací nebo v dialogovém okně Vlastnosti publikace – <Publikace> vyberte tabulku. Další informace o použití průvodce a přístup k dialogovému okně naleznete v tématu Vytvoření publikace a zobrazení a úprava vlastností publikace.
  2. Klepněte na položku Vlastnosti článku a potom klepněte na tlačítko Nastavit vlastnosti zvýrazněné tabulky článku nebo Nastavit vlastnosti všech článků tabulky.
  3. Na stránce Vlastnosti článku – <Článek> nebo Vlastnosti článku – <Typ článku> klikněte na kartu Resolver.
  4. Vyberte Povolit odběrateli, aby během synchronizace na vyžádání interaktivně vyřešil konflikty.
  5. Vyberte OK.
  6. Pokud jste v dialogovém okně Vlastnosti publikace - <Publikace> , kliknutím na tlačítko OK uložte a zavřete dialogové okno.

Určení, že předplatné by mělo používat interaktivní řešení konfliktů

  1. V dialogovém okně Vlastnosti předplatného – <Odběratel>: <SubscriptionDatabase> zadejte hodnotu True pro možnost Vyřešit konflikty interaktivně . Další informace o otevření tohoto dialogového okna naleznete v tématech Zobrazení a úprava vlastností nabízeného odběru a Zobrazení a úprava vlastností vyžádaného odběru.
  2. Vyberte OK.

Použijte Transact-SQL

Můžete programově určit, že Odběratel použije toto grafické rozhraní k řešení konfliktů článků při vytvoření odběru typu pull pro publikaci slučování. V interaktivním modulu Interactive Resolver se zobrazí pouze konflikty v článcích, které tuto možnost podporují.

Vytvořte slučovací odběr typu pull, který používá Interaktivní resolver

  1. V Publisher v databázi publikace spusťte sp_helpmergearticle a zadejte @publication. Poznamenejte hodnotu allow_interactive_resolver u každého článku v sadě výsledků, u něhož bude použit Interactive Resolver.
    • Pokud je tato hodnota rovna 1, použije se interaktivní resolver.
    • Pokud je tato hodnota 0, musíte nejprve pro každý článek povolit funkci Interactive Resolver. To provedete tak, že spustíte sp_changemergearticle a zadáte @publication, @article, hodnotu allow_interactive_resolver pro @property a hodnotu true pro @value.
  2. U odběratele v databázi předplatného spusťte sp_addmergepullsubscription. Další informace najdete v tématu Vytvoření odběru vyžádané replikace.
  3. Na straně odběratele databáze předplatného spusťte sp_addmergepullsubscription_agent a zadejte následující parametry:
    • @publisher, @publisher_db (publikovaná databáze) a @publication.
    • Hodnota true pro @enabled_for_syncmgr.
    • Hodnota true pro @use_interactive_resolver.
    • Informace o bezpečnostním účtu vyžadované agentem Merge Agent. Další informace najdete v tématu Vytvoření odběru typu pull.
  4. V Publisher v databázi publikace spusťte sp_addmergesubscription.

Definujte článek, který podporuje Interactive Resolver

  1. V Publisher v databázi publikace spusťte sp_addmergearticle. Zadejte název publikace, do které článek patří @publication, název článku pro @article, databázový objekt, pro @source_objectkterý se publikuje , a hodnotu true pro @allow_interactive_resolver. Další informace najdete v tématu Definování článku.

Úroveň sledování a řešení konfliktů pro články sloučení

Toto téma popisuje, jak určit úroveň sledování konfliktů a řešení pro články sloučení v SQL Server pomocí SQL Server Management Studio nebo Transact-SQL.

Při synchronizaci odběru sloučené publikace kontroluje replikace konflikty způsobené změnami stejných dat provedených v Publisher i odběrateli. Můžete určit, jestli jsou na úrovni řádků zjištěny konflikty, kde se jakákoli změna řádku považuje za konflikt nebo na úrovni sloupce, kde se považují za konflikt pouze změny stejného řádku a sloupce. Řešení konfliktů u článků se provádí na úrovni řádku. Další informace o detekci konfliktů a řešení při použití logických záznamů naleznete v tématu Detekce a řešení konfliktů v logických záznamech.

Limitace a omezení

  • Pokud upravíte úroveň sledování po inicializaci předplatných, musí se tato předplatná znovu inicializovat. Další informace o efektech změn vlastností naleznete v tématu Změnit publikaci a vlastnosti článku.
  • Při sledování na úrovni řádků i sloupců se konflikty vždy řeší na úrovni řádku: vítězný řádek přepíše poražený řádek. Slučovací replikace také umožňuje určit, že konflikty se sledují a řeší na úrovni logického záznamu, ale tyto možnosti nejsou dostupné z SQL Server Management Studio. Informace o tom, jak tyto možnosti nastavit pomocí uložených procedur replikace, naleznete v tématu Definovat vztah logického záznamu mezi články tabulek publikace Merge.

Použití aplikace SQL Server Management Studio

Určete sledování na úrovni řádků či sloupců pro články pro slučování na kartě Vlastnosti v dialogovém okně Vlastnosti článku, které je k dispozici v Průvodci novou publikací a v dialogovém okně Vlastnosti publikace – <Publikace>. Další informace o použití průvodce a přístup k dialogovému okně naleznete v tématu Vytvoření publikace a zobrazení a úprava vlastností publikace.

Určete sledování na úrovni řádků nebo sloupců

  1. Na stránce Články v Průvodci novou publikací nebo v dialogovém okně Vlastnosti publikace – <Publikace> vyberte tabulku.
  2. Klepněte na položku Vlastnosti článku a potom klepněte na tlačítko Nastavit vlastnosti zvýrazněné tabulky článku nebo Nastavit vlastnosti všech článků tabulky.
  3. Na kartě Vlastnosti dialogového okna Vlastnosti <článku> vyberte pro vlastnost Úroveň sledování jednu z následujících hodnot: Sledování na úrovni řádku nebo Sledování na úrovni sloupce.
  4. Pokud jste v dialogovém okně Vlastnosti publikace - <Publikace> , kliknutím na tlačítko OK uložte a zavřete dialogové okno.

Použijte Transact-SQL

Určení možností sledování konfliktů pro nový článek slučování

  1. V Publisher v databázi publikace spusťte sp_addmergearticle a zadejte jednu z následujících hodnot pro@column_tracking:

    • true – Pro článek použijte sledování na úrovni sloupců.
    • false – Použijte sledování na úrovni řádků, což je výchozí nastavení.

Změnit možnosti sledování konfliktů pro sloučený článek

  1. Pokud chcete určit možnosti sledování konfliktů pro článek hromadné korespondence, spusťte sp_helpmergearticle. Poznamenejte si hodnotu možnosti column_tracking v sadě výsledků pro článek. Hodnota 1 znamená, že se používá sledování na úrovni sloupce a hodnota 0 znamená, že se používá sledování na úrovni řádků.

  2. V Publisher v databázi publikace spusťte sp_changemergearticle. Zadejte hodnotu column_tracking pro @property a jednu z následujících hodnot pro @value:

    • true – Pro článek použijte sledování na úrovni sloupců.
    • false – Použijte sledování na úrovni řádků, což je výchozí nastavení.

    Zadejte hodnotu 1 pro obě @force_invalidate_snapshot a @force_reinit_subscription.

Správa odstranění sledování

Note

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

Ve výchozím nastavení slučovací replikace synchronizuje DELETE příkazy mezi Vydavatelem a Odběratelem. Slučovací replikace umožňuje zachovat řádky v databázi odběru i v případě, že byly z publikace odstraněny, a naopak. Můžete programově určit, že DELETE příkazy budou ignorovány při vytváření nového článku nebo můžete tuto funkci později povolit pomocí uložených procedur replikace.

Important

Povolení této funkce způsobí nekonvergenci, což znamená, že data u odběratele nebudou přesně odpovídat datům u vydavatele. Musíte implementovat vlastní mechanismus pro ruční odebrání odstraněných řádků.

Určete, že odstranění mají být pro nový článek sloučení ignorována

V Publisher v databázi publikace spusťte sp_addmergearticle (Transact-SQL). Zadejte hodnotu false pro @delete_tracking. Další informace najdete v tématu Definování článku.

Note

Pokud je zdrojová tabulka článku již publikována v jiné publikaci, musí být hodnota delete_tracking pro oba články stejná.

Určete, aby se odstranění ignorovala u existujícího článku sloučení

  1. Pokud chcete zjistit, jestli je pro článek povolená kompenzace chyb, spusťte sp_helpmergearticle (Transact-SQL) a poznamenejte si hodnotu delete_tracking v sadě výsledků. Pokud je tato hodnota 0, mazání se již ignoruje.

  2. Pokud je hodnota z kroku 1 1, spusťte sp_changemergearticle (Transact-SQL) na Publisher v databázi publikace. Zadejte hodnotu delete_tracking pro @property a hodnotu false pro @value.

    Note

    Pokud je zdrojová tabulka článku již publikována v jiné publikaci, musí být hodnota delete_tracking pro oba články stejná.

Pořadí zpracování

Slučovací replikace umožňuje určit pořadí, ve kterém jsou články zpracovány Merge Agent během procesu synchronizace. Pořadí jednotlivých článků můžete přiřadit programově při vytváření článku pomocí uložených procedur replikace. Články se zpracovávají v pořadí od nejnižších po nejvyšší hodnotu. Pokud mají dva články stejnou hodnotu, zpracovávají se souběžně.

Určení pořadí zpracování

Během synchronizace sloučení se články ve výchozím nastavení zpracovávají v pořadí, v jakém jsou vyžadovány závislostmi mezi objekty, včetně deklarativních omezení referenční integrity (DRI) definovaných v základních tabulkách. Zpracování zahrnuje vytvoření výčtu změn v tabulce a následné použití těchto změn. Pokud neexistuje žádná funkce DRI, ale filtry spojení nebo logické záznamy existují mezi články tabulky, články se zpracovávají v pořadí požadovaném filtry a logickými záznamy. Články, které nesouvisejí s žádným jiným článkem prostřednictvím DRI, filtrů spojení, logických záznamů nebo jiných závislostí, se zpracovávají podle aliasu článku v systémové tabulce sysmergearticles (Transact-SQL).

Představte si publikaci, která obsahuje tabulky SalesOrderHeader a SalesOrderDetail s sloupcem primárního klíče SalesOrderID v tabulce SalesOrderHeader a odpovídajícím sloupcem cizího klíče SalesOrderId v tabulce SalesOrderDetail . Během synchronizace slučovací replikace zabraňuje porušením omezení cizího klíče tím, že nejprve vloží všechny nové řádky do tabulky SalesOrderHeader a teprve potom vloží související řádky do tabulky SalesOrderDetail. Podobně se řádky odstraní z SalesOrderDetail před odstraněním přidruženého řádku z SalesOrderHeader.

V některých aplikacích se ale referenční integrita vynucuje prostřednictvím triggerů databáze nebo na úrovni aplikace, nikoli prostřednictvím dri. Vzhledem k výše popsané publikaci by tabulka SalesOrderDetail mohla mít místo DRI trigger při vložení, který před povolením vložení ověří, zda v tabulce SalesOrderHeader existuje odpovídající řádek. SalesOrderHeader může mít aktivační událost odstranění, která zajistí, že před povolením odstranění nejsou v SalesOrderDetail žádné přidružené řádky. Slučovací replikace při určování pořadí zpracování článků nebere v úvahu triggery, protože nemůže určit, jaký bude výsledek triggeru, dokud se nespustí. Podobně replikace nemůže vzít v úvahu omezení definovaná na úrovni aplikace.

Pokud se referenční integrita udržuje prostřednictvím triggerů nebo na úrovni aplikace, měli byste určit pořadí, ve kterém se mají články zpracovávat. V příkladu s triggery byste určili, že tabulka SalesOrderHeader by měla být zpracována před SalesOrderDetail, protože pořadí článků je založeno na vložení objednávky. Slučovací replikace automaticky obrátí pořadí odstraňování. Sloučená replikace neselže ani bez pořadí článků, protože Agent sloučení pokračuje ve zpracování článků, pokud dojde k porušení omezení; poté zopakuje všechny operace, které selhaly, až po zpracování ostatních článků. Zadáním pořadí článků se jednoduše vyhnete opakovaným pokusům a dalšímu zpracování, které je k nim přidružené. Pokud zadáte nesprávné pořadí (například to, které vede ke zpracování podrobných záznamů před záznamy hlaviček), slučovací replikace bude opakovat zpracování, dokud nebude úspěšná.

Nový článek

  1. V Publisher v databázi publikace spusťte sp_addmergearticle (Transact-SQL). Zadejte celočíselnou hodnotu, která představuje pořadí zpracování článku pro @processing_order. Další informace najdete v tématu Definování článku.

    Note

    Při vytváření seřazených článků byste měli nechat mezery mezi hodnotami pořadí článků. To usnadňuje nastavení nových hodnot v budoucnu. Pokud máte například tři články, pro které potřebujete zadat pevné pořadí zpracování, nastavte hodnotu @processing_order 10, 20 a 30 místo 1, 2 a 3.

Existující článek

  1. Pokud chcete určit pořadí zpracování článku, spusťte sp_helpmergearticle (Transact-SQL) a poznamenejte si hodnotu processing_order v sadě výsledků.
  2. V Publisher v databázi publikace spusťte sp_changemergearticle (Transact-SQL). Zadejte hodnotu processing_order pro @property a celočíselnou hodnotu, která představuje pořadí zpracování pro @value.