Korriger: Synkroniseringsoperasjon av en flettereplikasjon tidsavbrudd i Microsoft SQL Server 2005

Gjelder: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Feil #: 50002786 (SQL-hurtigreparasjon)
Microsoft distribuerer hurtigreparasjoner for Microsoft SQL Server 2005 som én nedlastbar fil. Fordi reparasjonene er kumulative, inneholder hver nye utgivelse alle hurtigreparasjonene og sikkerhetsreparasjonene som var inkludert i tidligere SQL Server 2005-Løs utgivelsen.

Symptomer


Tenk deg følgende. I Microsoft SQL Server 2005, kan du konfigurere en flettereplikasjon. Deretter distribuere statisk utvalg til en abonnent. I dette scenariet, når du kjører den flettes Agent å synkronisere data, blir operasjonen tidsavbrutt når den flettes Agent kaller opp prosedyren med sp_MSmakegeneration som er lagret.

Når du kjører følgende setning mot den replikerte databasen på abonnenten etter at operasjonen blir tidsavbrutt, vil i tillegg spørringen returnerer noen oppføringer som er utsatt for problemet:
select * from dbo.MSmerge_genhistory gh where not exists 
(select * from dbo.MSmerge_contents as mc
where mc.generation = gh.generation)
and not exists
(select * from dbo.MSmerge_tombstone as ts
where ts.generation = gh.generation)
and genstatus = 0
union
select * from dbo.MSmerge_genhistory gh
where exists
(select * from dbo.MSmerge_contents as mc
where mc.generation = gh.generation
and mc.tablenick <> gh.art_nick)
or exists
(select * from dbo.MSmerge_tombstone as ts
where ts.generation = gh.generation
and ts.tablenick <> gh.art_nick)
and genstatus = 0

Årsak


Dette problemet oppstår fordi det er en rad i tabellen for MSmerge_genhistory som oppfyller ett av følgende forhold:
  • Generasjonen har ingen endringer som er tilordnet til den i MSmerge_tombstone-tabellen eller i MSmerge_contents-tabellen.
  • Én eller flere rader som er tilordnet generasjonen har feil verdi i kolonnen tablenick i tabellen MSmerge_tombstone eller i MSmerge_contents-tabellen.
Denne situasjonen forårsaker sp_MSmakegeneration lagret prosedyren for å gå inn i en uendelig løkke.

Oppløsning


Hurtigreparasjonen for dette problemet ble først utgitt i kumulative oppdateringen 8. Hvis du vil ha mer informasjon om hvordan du får tak i denne kumulative oppdateringen for SQL Server 2005 Service Pack 2, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
951217 kumulativ oppdateringspakke 8 for SQL Server 2005 Service Pack 2
Obs! Fordi versjoner er kumulative, inneholder hver nye fix-utgivelse alle hurtigreparasjonene og sikkerhetsreparasjonene som var inkludert i tidligere SQL Server 2005-Løs utgivelsen. Microsoft anbefaler at du vurderer å bruke den nyeste versjonen av hurtigreparasjonen som inneholder denne hurtigreparasjonen. Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
937137 for SQL Server 2005 bygger som ble gitt ut etter at SQL Server 2005 Service Pack 2 ble utgitt
Hurtigreparasjoner for Microsoft SQL Server 2005 opprettes for bestemte oppdateringspakker for SQL Server. Du må bruke en hurtigreparasjon for SQL Server 2005 Service Pack 2 for en installasjon av SQL Server 2005 Service Pack 2. En hurtigreparasjon som finnes i en SQL Server service pack er som standard inkludert i neste oppdateringspakke for SQL Server.

Løsningen


Hvis du vil omgå dette problemet, gjør du følgende:
  1. Avbryt synkronisering-operasjonen ikke fullføres.
  2. Kjør følgende setninger for å få den generation_leveling_threshold innstillingen for publikasjonen:
    use <Publication Database Name>go
    exec sp_helpmergepublication @publication = '<Publication Name>'

    Noter verdien for innstillingen for generation_leveling_threshold.
  3. Kjør følgende setninger hvis du vil deaktivere utjevning generasjon og generasjon samler:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>'
    , @property = 'generation_leveling_threshold'
    , @value = 0

  4. Synkronisere data for publikasjonen.
  5. Når synkroniseringen er fullført, kan du tilbakestille den generation_leveling_threshold innstillingen tilbake til verdien som du noterte i trinn 2. Hvis du vil gjøre dette, kjører du følgende setninger:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>'
    , @property = 'generation_leveling_threshold'
    , @value = <Value>

Når du bruker denne metoden for å omgå dette problemet, vil dette problemet oppstå på nytt hvis en annen abonnent prøver å behandle genereringen. Du må gjenta disse trinnene for alle abonnenter som støter på problemer.

Status


Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon


Hvis du vil ha mer informasjon om hvilke filer endres, og informasjon om eventuelle forutsetninger for å installere kumulativ oppdateringspakke som inneholder hurtigreparasjonen som er beskrevet i denne Microsoft Knowledge Base-artikkel, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
951217 kumulativ oppdateringspakke 8 for SQL Server 2005 Service Pack 2

Referanser


Hvis du vil ha mer informasjon om listen over versjoner som er tilgjengelige etter at SQL Server Service Pack 2, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
937137 for SQL Server 2005 bygger som ble gitt ut etter at SQL Server 2005 Service Pack 2 ble utgitt
For mer informasjon om trinnvis Vedlikehold modellen for SQL Server, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
935897 en trinnvis Vedlikehold modell er tilgjengelig fra SQL Server-teamet å levere hurtigreparasjoner for rapporterte problemer
Hvis du vil ha mer informasjon om hvordan du skaffer SQL Server 2005 Service Pack 2, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
913089 hvordan du får tak i den nyeste oppdateringspakken for SQL Server 2005
Hvis du vil ha mer informasjon om de nye funksjonene og forbedringene i SQL Server 2005 Service Pack 2, kan du gå til følgende Microsoft-webområde:Hvis du vil ha mer informasjon om navngivingspraksis for SQL Server-oppdateringer, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
822499 Ny navngivingspraksis for Microsoft SQL Server-programvare for oppdateringspakker
Hvis du vil ha mer informasjon om terminologi for programvareoppdatering, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare