Exportovat (0) Tisk
Rozbalit vše
Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku.
Překlad
Originál

Provedení změn schématu u databáze publikace

Replikace podporuje širokou škálu změny schématu na publikované objekty.When you make any of the following schema changes on the appropriate published object at a Microsoft SQL Server Publisher, that change is propagated by default to all SQL Server Subscribers:

  • ALTER tabulka

  • ALTER tabulka sada eskalace zámků není vhodné používat je-li změnit schéma, replikace povolena a topologie obsahuje SQL Server 2005 Nebo SQL Server Compact 3.5 Subscribers.ALTER zobrazení

  • ZMĚNIT POSTUP

  • ZMĚNIT FUNKCE

  • ZMĚNIT AKTIVAČNÍ UDÁLOST

    ALTER TRIGGER lze použít pouze pro aktivační události jazyka [jazyk DML] manipulace data protože aktivační události jazyka [DDL] definice dat nemůže být replikována.

Important noteImportant Note:

Změny schématu tabulky musí být provedeny pomocí Transact-SQL Nebo SQL Server Objekty správy (SMO). Jakmile schéma změn v SQL Server Management Studio, Management Studio pokusí se odstranit a znovu vytvořit tabulka. Publikované objekty nelze pustíte, proto změny schématu se nezdaří.

Transakční replikace a slučovací replikace změny schématu jsou šířeny postupně při spuštění agenta distribuce nebo korespondence Agent.Pro replikace na snímek jsou změny schématu šířeny při použití nového snímku u odběratel.V snímková replikace je nové kopie schématu zaslána odběratel dochází každé časové synchronizace.Proto všechny změny schématu (nikoli pouze ty výše uvedené) na dříve publikované objekty jsou šířeny automaticky při každé synchronizaci.

Informace o přidávání a odebírání články z publikací naleznete v tématu Přidání články a přikapávací článků z existující publikace.

K replikaci změn schématu

Výše uvedené změny schématu jsou replikovány ve výchozím nastavení.Informace o zakázání replikace změny schématu naleznete v následujících tématech:

Při replikaci změn schématu mějte na paměti následující skutečnosti.

Obecné otázky

  • Změny schématu jsou předmětem omezení vynucená Transact-SQL. Například ALTER tabulka neumožňuje jste ALTER sloupce primární klíč.

  • Typ mapování dat se provádí pouze pro počáteční snímek.Změny schématu nejsou namapovány na předchozí verze datových typů.Například pokud výraz ALTER TABLE ADD datetime2 column je používán SQL Server 2008, typ dat nelze přeložit nvarchar Pro SQL Server 2005 Odběratelé. V některých případech změny schématu jsou blokovány na Vydavatel.

  • Je-li publikace nastavena na povolit šíření změny schématu, změny schématu jsou šířeny ohledu na to, jak je pro článek v publikaci nastavili možnost související schématu.Například pokud se rozhodnete nelze replikovat omezení cizího klíče pro tabulka článek, ale potom vydat pomocí příkazu ALTER tabulka, který přidá cizího klíče tabulka u Vydavatel, cizí klíč přidány do tabulka u odběratel.Chcete-li tomu zabránit, zakázat šíření změn schématu před vydáním příkazu ALTER tabulka.

  • Změny schématu by měly být provedeny pouze u Vydavatel, nikoli na předplatitele (včetně publikování předplatitelé).slučovací replikace zabraňuje změn schématu u odběratel.Transakční replikace nebrání změny, ale změny mohou způsobit selhání replikace.

  • Změny, které rozšířena do republishing odběratel jsou ve výchozím nastavení přeneseny do jeho předplatitele.

  • Pokud schéma změnit odkazy na objekty nebo omezení stávajících na Vydavatel, ale ne na odběratel, změny schématu budou úspěšně odeslány na Vydavatel, ale nebude na odběratel.

  • Všechny objekty na odběratel, které jsou uvedeny při přidání cizí klíč musí mít stejný název a vlastníka jako odpovídající objekt na Vydavatel.

  • Explicitně přidáním, odstranění nebo pozměňování indexy není podporována.Indexy, které jsou implicitně vytvořené pro omezení (například omezení primární klíč) jsou podporovány.

  • Změna nebo odstranění sloupce identity, které jsou spravovány službou replikace není podporována.Další informace o automatické správě sloupců identity naleznete v tématu Replikace identity sloupce.

  • Změny schématu, které zahrnují nedeterministické funkce nejsou podporovány, protože může způsobit dat na vydavatel a odběratel příslušném různých (dále jako bez konvergence).Pokud například vydat u Vydavatel následující příkaz: ALTER TABLE SalesOrderDetail ADD OrderDate DATETIME DEFAULT GETDATE(), pokud příkazu je replikována na odběratel a provedeny jsou různé hodnoty.Další informace o nedeterministické funkce naleznete v tématu Deterministický a nedeterministické funkce.

  • Je vhodné mít omezení explicitně název.Pokud omezení není explicitně název, SQL Server Generuje název omezení, a tyto názvy bude na Vydavatel a každého odběratel. To může způsobit problémy při replikace změn schématu.Například pokud přetáhnete sloupec u Vydavatel a závislé omezení je zrušen, replikace se pokusí umístit omezení u odběratel.Přetažení u odběratel se nezdaří, protože název omezující podmínky se liší.Pokud se synchronizace nezdaří z důvodu problému omezení názvů, ručně přetažením omezení u odběratel a pak znovu spusťte agenta sloučit.

  • Pokud tabulka publikována pro replikaci, není možné změnit sloupec v tabulce s typem dat XML, jestliže již byl vygenerován snímek publikace do změnit na sloupec, je třeba nejprve odebrat replikace.Další informace naleznete v tématu Odebrání replikace.

Přidání sloupce

  • Přidat nový sloupec do tabulky a tento sloupec zahrnout do existující publikace provést ALTER TABLE <TABULKA> add <Sloupec>. Ve výchozím sloupec potom replikovány do všech předplatitele.Sloupec musí povolit hodnoty NULL nebo zahrnout výchozí omezení.Další informace o přidávání sloupců naleznete v části "Slučovací replikace" v tomto tématu.

  • Přidání nového sloupce do tabulky a nezahrnuje sloupce do existující publikace, zakázat replikace změn schématu a potom provést ALTER TABLE <TABULKA> add <Sloupec>.

  • Chcete-li existující sloupec zahrnout do existující publikace, použijte sp_articlecolumn (Transact-SQL), sp_mergearticlecolumn (Transact-SQL), nebo Vlastnosti zveřejnění- <vydání> Uspořádat oblíbené.

    Další informace naleznete v tématu Postup: Definovat a změnit sloupcový filtr (programovací replikace Transact-SQL) and Postup: Definovat a změnit sloupcový filtr (SQL Server Management Studio). Tato operace bude vyžadovat předplatné, být reinicializována.

  • Přidání sloupec identity publikované tabulka není podporována, protože může vyústit v jiných konvergence při replikaci sloupci na odběratel.Hodnoty sloupec identity u Vydavatel, závisí na pořadí, v němž jsou fyzicky uloženy řádky pro tabulka obsahující tuto chybu.Řádky mohou být uloženy jinak u odběratel, proto mohou být různé pro stejné řádky hodnotu pro sloupec identity.

Odstranění sloupce

  • Přetáhněte sloupec z existující publikace a přetáhněte sloupec z tabulky u Vydavatel, provedení příkazu ALTER TABLE <TABULKA> PŘETAŽENÍ <Sloupec>. Ve výchozím sloupec potom poklesl z tabulka na všechny předplatitele.

  • Chcete-li vynechat sloupec ze stávající publikace, ale zachovat sloupce tabulka u Vydavatel, použijte sp_articlecolumn (Transact-SQL), sp_mergearticlecolumn (Transact-SQL), nebo Vlastnosti zveřejnění- <vydání> Uspořádat oblíbené.

    Další informace naleznete v tématu Postup: Definovat a změnit sloupcový filtr (programovací replikace Transact-SQL) and Postup: Definovat a změnit sloupcový filtr (SQL Server Management Studio). Tato operace bude vyžadovat nový snímek, které budou generovány.

  • Sloupec ke ztrátě nelze použít v klauzulích filtr jakékoli článek libovolné publikace v databázi.

  • Při odstranění sloupec z publikovaného článek, vzít v úvahu omezení, indexy nebo vlastnosti sloupec, které by mohly mít vliv databázi.Příklad:

    • Sloupce použité v primární klíč z článků v transakční publikacích nelze vynechat, protože používá replikace.

    • Z článků do publikace hromadné korespondence nebo mstran_repl_version sloupce z článků v transakční publikací, které podporují aktualizaci odběry nelze vynechat sloupec rowguid, protože používá replikace.

    • Změny indexu nejsou rozšířena do předplatitelé: Pokud přetáhnete sloupec u Vydavatel a závislé indexu je zrušen, přetažení indexu není replikován. By měl pustíte index u odběratel před uvolněním sloupec u Vydavatel, tak, aby přetažení sloupců úspěšný při replikaci od Vydavatel pro odběratel.Pokud se synchronizace nezdaří z důvodu indexu u odběratel, ručně odstranit index a znovu spusťte agenta sloučit.

    • Omezení výslovně nazvány umožňující odstranění.Další informace naleznete v části "Obecné otázky" dříve v tomto tématu.

Transakční replikace

  • Změny schématu jsou šířeny pro předplatitele s předchozími verzemi SQL Server, ale výraz skriptu DDL by pouze zahrnout syntaxe podporována verze u odběratel.

    Pokud odběratel znovu publikuje uzamkl data, jsou změny pouze podporované schématu přidání a odstranění sloupec.Tyto změny by měly být provedeny na Vydavatel pomocí sp_repladdcolumn (Transact-SQL) and sp_repldropcolumn (Transact-SQL) namísto syntaxe příkazu ALTER tabulka DDL.

  • Změny schématu nejsou rozšířena do jiných-SQL Server Odběratelé.

  • Změny schématu nebyly šířeny z jiných-SQL Server Vydavatelů.

  • Indexovaná zobrazení, které jsou replikovány jako tabulky, nelze změnit.Index zobrazení, které jsou replikovány jako indexovaná zobrazení mohou být změněny, ale je změna způsobí, že jim stane normální zobrazení, nikoli indexovaných zobrazení.

  • Pokud publikace podporuje okamžité aktualizace nebo ve frontě, aktualizace, odběry, systém musí být quiesced před provedením změn schématu: musí být zastavena veškerá činnost v publikované tabulce v Vydavatel a předplatitelé a až do data musí být změny rozšířena do všech uzlů. Po změny schématu mají rozšířena do všech uzlů, činnost může pokračovat v publikovaných tabulkách.

  • Pokud je publikace v topologii peer-to-peer, v systému musí být quiesced před provedením změn schématu.Další informace naleznete v tématu Postup: Uvést do stavu nečinnosti replikační topologie (programovací replikace Transact-SQL).

  • Přidání časového razítka sloupec do tabulka a mapování časového razítka k binary(8) způsobí článek být reinicializována pro všechny aktivní předplatné.

Sloučit replikace

  • Jak změny schématu úchyty replikace sloučení se zakládá na úroveň kompatibility publikace a zda snímek nastavena na nativní režim (výchozí) nebo znakový režim:

    • K replikaci změn schématu, úroveň kompatibility publikace, musí být alespoň 90RTM.Pokud běží předplatitelé předchozích verzí SQL Server nebo úroveň kompatibility je menší než 90RTM, můžete použít sp_repladdcolumn (Transact-SQL) and sp_repldropcolumn (Transact-SQL) Chcete-li přidat a přetažení sloupců. Tyto postupy jsou však nyní.

    • Pokud se pokusíte přidat stávající článek sloupec s datovým typem, který byl zaveden v SQL Server 2008, SQL Server má následující chování:

      100RTM, nativní snímek

      100RTM znak snímek

      Všechny ostatní úrovně kompatibility

      hierarchyid

      Povolit změnu

      Změna blok

      Změna blok

      geography a geometry

      Povolit změnu

      Povolit změnu1

      Změna blok

      filestream

      Povolit změnu

      Změna blok

      Změna blok

      date , time, datetime2and datetimeoffset

      Povolit změnu

      Povolit změnu1

      Změna blok

      1 Předplatitelé Compact SQL Server převést tyto typy dat u odběratel.

    Další informace o kompatibilitě publikaci naleznete v části "Compatibility úroveň pro sloučení publikace" Použití více verzí serveru SQL Server v replikační topologie.

  • Pokud dojde k chybě při použití změny schématu (jako jsou například chyby vyplývající z přidání cizí klíč, který odkazuje na tabulka, která není k dispozici u odběratel), musí být synchronizace nezdaří a odběr reinicializována.

  • Schéma je provedena změna sloupec účastnících se spojovací filtr nebo filtru parametrizované, je nutné znovu inicializovat všechny odběry a obnovit snímek.

  • slučovací replikace obsahuje uložené procedury přeskočit změny schématu při odstraňování problémů.Další informace naleznete v tématu sp_markpendingschemachange (Transact-SQL) and sp_enumeratependingschemachanges (Transact-SQL).

Zobrazit:
© 2015 Microsoft