KB2733630 – Az egyesítési ügynök működése sikertelen lehet az egyesítési replikáció szinkronizálása során a SQL Server-ben

Hatókör
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Parallel Data Warehouse SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use)

Tünetek

A Microsoft SQL Server 2008-ban és az SQL Server újabb verzióiban az egyesítési replikáció szinkronizálása során előfordulhat, hogy az egyesítési ügynök működésképtelen lesz. Ezenkívül az alábbihoz hasonló hibaüzenet is megjelenik:

Megjegyzés

Az egyesítési ügynök meghiúsult, miután észlelte, hogy a megőrzésen alapuló metaadat-karbantartás törölte a Közzétevőnek még el nem küldött módosítások metaadatait az Előfizetőnél. Újra inicializálnia kell az előfizetést (feltöltés nélkül). (Forrás: MSSQL_REPL, hibaszám: MSSQL_REPL-2147199401)

Segítség kérése: http://help/MSSQL_REPL-2147199401

A problémának több oka is lehet. Ezek közé tartozik számos ok, amelyek bizonyos körülmények között várhatók. Annak megállapításához, hogy váratlanul jelentkezett-e ez a hiba, tekintse át az "Ok" című szakaszban leírt metaadatok részleteit.

Ok

A probléma oka az előfizető következő rendszertáblázataiban található:

  • dbo.sysMergeSubscriptions
  • dbo. MsMerge_Genhistory

Győződjön meg arról, hogy a körlevélügynök már nem szinkronizál. Ezután futtassa a következő lekérdezést, és vizsgálja meg az eredményt:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions, ahol pubid = subid és sentgen is not null

A lekérdezés eredménye

A sentgen oszlop a módosítások legrégebbi csoportját jelöli, amelyet az előfizető küldött a kiadónak. Ha több értéket ad vissza, ellenőrizze a dbo.sysMergeSubscriptions tábla többi oszlopát, és győződjön meg arról, hogy a megfelelő kiadvány metaadatait jeleníti meg. Ezután használja a lekérdezés által visszaadott értéket a következő lekérdezésben:

select top 20 * from SubscriberDB.dbo.MSmerge_genhistory where generation >= sentgen_value order by generationA lekérdezés kimenetének a következőhöz hasonlónak kell lennie:

Lekérdezés eredménye generációnként

A hiba váratlanul jelentkezhet, ha az alábbi feltételek mindegyike igaz:

  • Az első sor generáció oszlopának értéke valamivel nagyobb, mint az előző lekérdezés sentgen értéke.
  • A genstatus oszlop értéke 4.
  • A changecount oszlop értéke 0.

Megjegyzés: Az első sorban coldate oszlop értéke is általában jóval régebbi, mint a többi sorban lévő oszlop értéke.

Megoldás

A probléma megoldásához inicializálja újra a hibát okozó előfizetőt.

Bizonyos esetekben a probléma teljes újrainicializálás nélkül is megoldható. A lehetséges kerülő megoldással kapcsolatos információkért lépjen kapcsolatba a Microsoft ügyfélszolgálatával.

A probléma jövőbeni előfordulásának megelőzése érdekében alkalmazza az alábbi javítások egyikét az SQL Server verziójától függően.

Összegző frissítéssel kapcsolatos információk

SQL Server 2008

Az SQL Server 2008-ban nincs javítás erre a problémára.

SQL Server 2008 R2 Service Pack 2

A hiba javítását először a 3. összegző frissítésben adtuk ki. Az SQL Server 2008 R2 Service Pack 2 szervizcsomaghoz kiadott összegző frissítőcsomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2754552 3. összegző frissítőcsomag a SQL Server 2008 R2 Service Pack 2-höz
 Megjegyzés: Mivel a buildek összegzőek, minden új javításkiadás tartalmazza az összes gyorsjavítást és minden biztonsági javítást, amely az előző SQL Server 2008 R2 Service Pack 2 javításban szerepelt. Javasoljuk, hogy fontolja meg a gyorsjavítást tartalmazó legújabb javítás telepítését. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2730301 A SQL Server 2008 R2 Service Pack 2 után megjelent SQL Server 2008 R2 buildek

SQL Server 2012

A hiba javítását először a 4. összegző frissítésben adtuk ki. Az SQL Server 2012-höz készült kumulatív frissítési csomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2758687 4. összegző frissítőcsomag a SQL Server 2012-höz
 Megjegyzés: Mivel a buildek kumulatívak, minden új javítás tartalmazza az előző SQL Server 2012-es javítás összes gyorsjavítását és biztonsági javítását. Javasoljuk, hogy fontolja meg a gyorsjavítást tartalmazó legújabb javítás telepítését. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2692828 Megjelentek a SQL Server 2012 utáni SQL Server 2012-es buildek

SQL Server 2008 R2 Service Pack 1

A hiba javítását először a 8-as összegző frissítésben adtuk ki. Az SQL Server 2008 R2 Service Pack 1 szervizcsomaghoz kiadott összegző frissítőcsomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2723743 8-as összegző frissítés a SQL Server 2008 R2 SP1-hezMegjegyzés: Mivel a buildek kumulatívak, minden új javításkiadás tartalmazza az SQL Server 2008 R2 Service Pack 1 előző kiadásában szereplő összes gyorsjavítást és biztonsági javítást. Javasoljuk, hogy fontolja meg a gyorsjavítást tartalmazó legújabb javítás telepítését. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2567616 Megjelentek a SQL Server SQL Server 2008 R2 SP1 utáni 2008 R2 buildek