KB2938828-FIX: database spiegeling treffers assert en spiegeling toont de status onderbroken in SQL Server 2012 of SQL Server 2014

Werk overal vanaf elk apparaat met Microsoft 365

Voer een upgrade uit naar Microsoft 365 om overal te werken met de nieuwste functies en updates.

Nu upgraden

Symptomen

Wanneer u verspiegeling van databases gebruikt in Microsoft SQL Server 2012 of Microsoft SQL Server 2014, kunt u op een van de voorwaarden van de assert-voorwaarden en databasespiegeling aanraken.

Oorzaak

Het probleem kan zich voordoen omdat bij het toewijzen van een nieuwe pagina een nieuwe pagina door SQL Server wordt gedownload op de nieuwe pagina. SQL Server plaatst de hobt_id (heap of B-structuur-ID) waartoe de nieuwe pagina deel uitmaakt in de vergrendelingsaanvraag. In SQL Server kunnen de hobt_id echter niet worden toegevoegd aan een spiegel logboek en wordt het verschil tussen de primaire en de gespiegelde werking veroorzaakt. Dit kan uitgebreid worden beschreven:

  1. T1-vergrendeling op pagina P1.

  2. T2 een pagina splitsen op P1, een nieuwe pagina P2 toevoegen, er een systeem transactie is die hier is geschreven, bevat een X-lock op de P2. De hobt_id in het gespiegelde logboek is niet in SQL Server geplaatst.

  3. TX houdt een vergrendelde migratie voor T1 in de plaats van P1 to P2.

  4. TX vastgelegd, nu t/t/t/t/t/t

  5. T1 is vastgelegd, nu T2 de enige met een juridische slot die de P2-vergrendeling houdt.

  6. Na het invoeren van een vergrendeling op de primaire plaats van de i t/t, wordt de IX-vergrendeling niet vrijgegeven door T2.

  7. Na een heleboel verwijdering werd de pagina P2 leeg en is de toewijzing van de pagina ongedaan.

  8. Voor de functie T3 moet een nieuwe pagina zijn vereist, en als u een P2 moet toewijzen, is hiervoor een X-Lock vereist, maar op de mirror is deze stap mislukt vanwege stap 6.

Op de mirror wordt de IX-vergrendeling niet vrijgegeven omdat de hobt_id in het vergrendelings blok niet klopt. Dit onjuiste hobt_id komt voor in stap 2 en omdat SQL Server de hobt_id niet in het spiegeling-logboek plaatst, wordt het meestal niet weergegeven omdat de vastlegging in stap 2 zeer kort is en het vergrendelings blok met onjuiste hobt_id wordt vrijgegeven wanneer het wordt vastgelegd. Vanwege vergrendelen van vergrendelen in step3 en de volgende stappen (4 en 5), wordt dit vergrendelings blok met onjuiste hobt_id bewaard en wordt het probleem uiteindelijk veroorzaakt. Dit probleem doet zich niet voor omdat dit een juiste hobt_id in stap 2 gebruikt. De logboekrecord bevat niet de juiste hobt_id.

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:

Tijdelijke oplossing

Als u het probleem tijdelijk wilt omzeilen, initialiseert u de mirror opnieuw om de Suspend-status te beƫindigen.

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagenten.

×