Oprava: Chybová zpráva vložit údaje o předplatitel slučovací replikace serveru SQL Server 2005: "řádek zpráva 548, 16, stav 2, úroveň 1. Vložení se nezdařilo"

Překlady článku Překlady článku
ID článku: 953481 - Produkty, které se vztahují k tomuto článku.
Bug #: 50002854 (SQL opravy Hotfix)
Společnost Microsoft distribuuje opravy 2005 Microsoft SQL Server jako jeden soubor ke stažení. Vzhledem k tomu, že jsou kumulativní opravy, každá nová verze obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí serveru SQL Server 2005, opravte uvolnění.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Zvažte následující scénář. SQL Server 2005 nakonfigurujete slučovací publikaci. Je-li přidat tabulku obsahující sloupec identity do publikace hromadné korespondence. Potom data vložit do tabulky na vydavatele. Synchronizovat data mezi účastníka a vydavatele, a opakujte vkládat další data na vydavatele. V této situaci zobrazí následující chybová zpráva na vydavatele:
Msg 548, úroveň 16 státu 2, řádek 1
Vložení se nezdařilo. Je v konfliktu s identitou rozsah zkontrolovat omezení v databázi ' DatabaseName ', replikované tabulce "Schema. TableName", sloupec "ColumnName". Pokud sloupec identity automaticky spravuje replikace, aktualizovat oblast takto: pro aplikaci Publisher, provést sp_adjustpublisheridentityrange; pro odběratele, spustit agenta distribuce nebo sloučit Agent.
Pokud se pokusíte spustit sp_adjustpublisheridentityrange uložená procedura na vydavatele uvedené v chybové zprávě, stále nelze vyřešit tento problém.

K tomuto problému dochází, pokud více agentů korespondence synchronizovat data současně pro stejný publikaci hromadné korespondence. Tento problém může být exacerbated, pokud máte mnoho odběratelům slučovací publikaci.

Příčina

K tomuto problému dochází, protože aktuální hodnota identity v tabulce na vydavatele není v rozsahu kontrolního omezení identity rozsah identity. K tomuto chování dochází v případě více agentů sloučit se pokuste zvýšit rozsah identity ve stejnou dobu vytváření následující oblasti identity na vydavatele.

Řešení

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 8. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2005 Service Pack 2 naleznete následující článku znalostní báze Microsoft Knowledge Base:
951217Balíček kumulativní aktualizace 8 pro SQL Server 2005 Service Pack 2
Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí serveru SQL Server 2005, opravte uvolnění. Společnost Microsoft doporučuje zvážit použití nejnovější vydání opravy, které tato oprava hotfix. Další informace získáte následujícím článku znalostní báze Microsoft:
937137Vytvoří serveru SQL Server 2005, které byly vydány po vydání serveru SQL Server 2005 Service Pack 2
Opravy hotfix Microsoft SQL Server 2005 jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2005 Service Pack 2 je třeba použít k instalaci serveru SQL Server 2005 Service Pack 2. Ve výchozím nastavení žádné opravy hotfix, která je poskytována v aktualizace service pack pro SQL Server je součástí příští aktualizace service pack pro SQL Server.

Jak potíže obejít

Chcete-li tento problém vyřešit, musí zabránit synchronizace více souběžných hromadné korespondence. Chcete-li to provést, nastavte vlastnost max_concurrent_merge do publikace hromadné korespondence spuštěním následujícího příkazu:
sp_changemergepublication '<PublicationName>', 'max_concurrent_merge', 1
Poznámka: po použijete toto zástupné řešení, může snížit výkon Pokud máte mnoho odběratelům v publikaci. K tomuto chování dochází, protože pouze jeden účastník může synchronizovat data v čase.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části „ platí.

Další informace

Jak zjistit, zda se vás tento problém

Chcete-li zjistit, zda se vás tento problém, postupujte takto:
  1. Ověřte, zda je aktuální hodnota identity menší než dolní mez první oblast kontrolního omezení identity rozsah identity.

    Chcete-li získat aktuální hodnotu identity, spusťte následující příkaz:
    SELECT IDENT_CURRENT ('<TableName>')
    Získat identitu rozsahy kontrolního omezení rozsahu identity, spusťte některou z následujících tvrzení:
    Příkaz 1
    sp_helpconstraint '<TableName>'
    Prohlášení 2
    select * from MSmerge_identity_range
    where is_pub_range <>1
    AND artid IN 
     (select artid from sysmergearticles where name='<TableName>')
    AND subid in 
     (select subid from sysmergesubscriptions  MS
    join sysmergepublications MP 
    on MS.subscriber_server=MP.publisher
    AND MS.db_name = MP.publisher_db
    WHERE name='<PublicationName>'
    )
    
  2. Trasování SQL Server System Profiler použít k určení, zda prokládaném spuštění sp_MSsetup_publisher_idrange uložený postup jsou zahájeny samostatné sloučit Agent relací pro stejné publikaci.

    Však prokládaném spuštění sp_MSsetup_publisher_idrange uložený postup nemusí vždy znamenat, že se vás tento problém. Důvodem je, že SQL Server System Profiler nebyla spuštěna při vygenerování původní výskyt slučovací synchronizaci první chybová zpráva. Prokládaném spuštění sp_MSsetup_publisher_idrange uložený postup však zvýšit možnost u dochází k tomuto problému.
  3. Můžete najít překrývající se synchronizací sloučení, ke kterým dochází při obdržíte "548" chybová zpráva. Chcete-li to provést, můžete zkontrolovat historie sloučení v distribuční databáze. Chcete-li to provést, spusťte následující příkazy: max(time)
    Use distribution
    GO
    select session_id, agent_id, B.publication, min(time) as StartTime, max(time) as EndTime
    into #sessiontimes
    from dbo.MSmerge_history A
    join dbo.msmerge_agents B
    on A.agent_id = B.id
    group by session_id, agent_id, publication
    order by 3 desc
    GO
    -- The left side result is the original session. The right side result is the overlapping session.
    select A.*, B.* 
    from #sessiontimes A
    Join #sessiontimes B
    On B.StartTime >= A.StartTime
    AND B.StartTime <= A.EndTime
    AND A.session_id <> B.session_id
    And A.publication=B.publication
    Order By A.StartTime asc
    GO
    drop table #sessiontimes
    

Jak opravit existující poškození identity rozsahy problematické tabulky

Po instalaci kumulativní aktualizace nebo po použití metody popsané v části řešení, stávající rozsah poškozené identity v tabulce není opravován. "548" Chybovou zprávu obdržíte stále Pokud se pokusíte vložit data do tabulky a synchronizaci dat na odběratele. Musíte proto ručně opravit rozsahy poškozené identity v tabulce. Chcete-li to provést, postupujte takto.

Poznámka: Tyto kroky zahrnují ručně přepsání aktuální hodnotu osiva identity v tabulce správně reseed hodnotu identitu vydavatele. Ve stavu poškozené aktuální hodnota identity je menší než první oblast identity v slučovací replikace identity rozsah kontrolního omezení. Kroky ručně zvýšit identity hodnotu, která spadá dovnitř identity oblast, která je určena slučovací replikace identity rozsah kontrolního omezení. Tyto kroky předpokládají, že identity jsou konfigurovány vzestupné způsobem a zda je přírůstek pro identitu konfigurována zvýšit hodnotu 1.
  1. Potvrdit, že hodnota přírůstku identity je 1 a že totožnost pokračuje ve vzestupném způsobem. Hodnota přírůstku identity lze získat spuštěním následujícího příkazu na vydavatele:
    SELECT IDENT_INCR( '<TableName>')
  2. Spustit následující příkaz na aplikace publisher najít aktuální identity hodnotu ve sloupci identity problematické:
    DBCC CHECKIDENT ('<TableName>')
    Poté, co obdržíte výsledek, poznamenejte si hodnotu aktuální hodnotu identity pro porovnání v dalších krocích. Všimněte si, že valye aktuální hodnotu ve sloupci může být větší nebo menší než hodnota aktuální hodnoty identity.

    Pokud je aktuální hodnota sloupce hodnota větší než hodnota aktuální hodnoty identity, může mít hodnotu sloupce na jiné replikacemi v topologii pochází a úspěšně sloučeny s replikací v aplikaci publisher. Pokud je aktuální hodnota sloupce hodnota menší než hodnota aktuální hodnoty identity, hodnoty může byly vloženy na vydavatele starší najednou pomocí IDENTITY_INSERT ON SET prohlášení před konfiguraci replikace hromadné korespondence.
  3. Spusťte následující příkazy na aplikace publisher zjistit aktuální identity rozsahy rozsah identity zkontrolovat omezení k tabulce problematické: sp_helpconstraint
    Use <PublishedDatabaseName>
    GO
    sp_helpconstraint '<TableName>'
    GO
    
    Poté, co obdržíte výsledek, poznamenejte si hodnotu constraint_keys sloupce záznamu, kde je hodnota ve sloupci constraint_name "repl_identity_range_ GUID. Hodnota GUID odpovídá hodnotě artid sloupce pro článek v systémové tabulce sysmergearticles. Chcete-li získat identifikátor GUID, spusťte následující příkaz: Vyberte artid
    select artid from sysmergearticles where name = '<TableName>'
    Kontrolního omezení identity rozsah přesahuje dva samostatné rozsahy. Dvě sady rozsahy nemusí sousedit. Například hodnota ve sloupci constraint_keys může být takto:
    ([Název_sloupce] > (1001) A [ColumnName]<=(2001)
    [Název_sloupce] nebo > (9001) AND [ColumnName]<=(10001))
    Poznámka: Tento článek pomocí předkládat kód ve zbývající kroky v tomto příkladu.

    V tomto příkladu span rozsahy jednotlivých hodnot 1 000. 1 000 je výchozí rozsah velikost. Však můžete změnit velikost oblasti identity pomocí jedné z následujících metod:
    • Určit a @ pub_identity_range parametr při spuštění sp_addmergearticle uložená procedura.
    • Změnit vlastnost velikost rozsahu odběratele pro článek v dialogovém okně Vlastnosti článku.
  4. Pokud se setkáváte s problémy popsanými v části "Příznaky", aktuální hodnota identity, kterou jste si poznamenali v kroku 2 by měla být menší než dolní mez rozsahu identity první rozsah kontrolního omezení identity, které jste si poznamenali v kroku 3.

    Pokud je aktuální identity v kroku 2 hodnota větší než horní mez druhá oblast identity, rozsah identity check omezení problém vyřešit pomocí metody, které se doporučuje v chybové zprávě. Proto by měla spustit sp_adjustpublisheridentityrange uložený postup na vydavatele.

    Další informace o postupu sp_adjustpublisheridentityrange uložené na webu Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/en-us/library/ms181527.aspx
  5. Spusťte následující příkaz k určení, zda všechny řádky jsou v aktuální identity rozsahy kontrolního omezení rozsahu identity:
    SELECT COUNT(*) FROM TableName WHERE 
    ([ColumnName]>(1001) AND [ColumnName]<=(2001) 
    OR [ColumnName]>(9001) AND [ColumnName]<=(10001))
    
    Poznámky
    • Pokud příkaz vrátí hodnotu 0, žádné řádky jsou v oblasti aktuální identity. V takovém případě přejděte ke kroku 6.
    • Pokud příkaz vrátí hodnotu, která je větší než 0, spusťte následující příkaz k získání hodnoty maximální identity v oblasti aktuální identity:
      SELECT MAX(ColumnName) as MaxValue FROM TableName WHERE 
      ([ColumnName]>(1001) AND [ColumnName]<=(2001) OR 
      [ColumnName]>(9001) AND [ColumnName]<=(10001))
      
      Poznamenejte si hodnotu vrácenou a poté přejděte ke kroku 7.
  6. Ručně reseed aktuální identita problematické tabulky spadají uvnitř platný rozsah.

    Reseed aktuální identitu na nejnižší hodnotu oblasti aktuální identity plus 1. Například pokud je nejnižší hodnota aktuální identity rozsahů 1001, možné v rozsahu je první hodnota 1002 vzhledem k tomu, že nízké konec rozsahu z kontrolní omezení identity rozsah používá větší než znaménko (&gt;). Chcete-li to provést, spustit následující příkaz na vydavatele a potom přejděte ke kroku 8:
    DBCC CHECKIDENT ('TableName', RESEED, 1002)
  7. Ručně reseed aktuální identita problematické tabulky spadají uvnitř platný rozsah.

    Předpokládá, že je přírůstek pro identitu 1. Reseed aktuální identitu na hodnotu, kterou jste si poznamenali v kroku 5 a přidejte 1. Pokud je hodnota, kterou jste si poznamenali v kroku 5 1507, reseed do. 1508 aktuální identitu. Chcete-li to provést, spusťte následující příkaz na vydavatele:
    DBCC CHECKIDENT ('TableName', RESEED, 1508)
  8. Provedení testu k určení, zda nové řádky lze vložit do tabulky v databázi aplikace publisher bez 548 výskytu chyby.
Další informace o jaké soubory jsou změněny a informace o všech předpokladech, chcete-li použít balíček kumulativní aktualizaci obsahující opravu hotfix, která je popsána tohoto článku znalostní báze Microsoft Knowledge Base naleznete následujícím článku znalostní báze Microsoft Knowledge Base:
951217Balíček kumulativní aktualizace 8 pro SQL Server 2005 Service Pack 2

Odkazy

Další informace o seznamu sestavení, které jsou k dispozici po SQL Server Service Pack 2 získáte následujícím článku znalostní báze společnosti Microsoft:
937137Vytvoří serveru SQL Server 2005, které byly vydány po vydání serveru SQL Server 2005 Service Pack 2
Další informace o přírůstkové obsluhovaní model pro SQL Server získáte následujícím článku báze Microsoft Knowledge Base:
935897Přírůstkové modelu obsluhovaní je k dispozici tým serveru SQL Server dodat opravy hotfix pro nahlášené potíže
Další informace o získání aktualizace SQL Server 2005 Service Pack 2 získáte následujícím článku báze Microsoft Knowledge Base:
913089Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Další informace o nových funkcích a vylepšeních v aktualizaci SQL Server 2005 Service Pack 2 naleznete na webu společnosti Microsoft:
http://go.microsoft.com/fwlink/?LinkId=71711
Další informace o pojmenování schématu pro SQL Server aktualizace, získáte následujícím článku báze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server
Další informace o terminologii aktualizace softwaru naleznete následující článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 953481 - Poslední aktualizace: 11. července 2008 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
Klíčová slova: 
kbmt kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver kbautohotfix kbsql2005repl KB953481 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:953481

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com