KB2938828 - ISPRAVKA: Preslikavanje baze podataka pogađa assert i preslikavanje sesije pokazuje obustavljeno stanje u SQL Server 2012 ili SQL Server 2014

Simptomi

Kada koristite preslikavanje baze podataka u sistemu Microsoft SQL Server 2012 ili Microsoft SQL Server 2014, možete da pogodite stanje potvrde, a preslikavanje baze podataka ulazi u obustavljeno stanje.

Uzrok

Do problema dolazi zato što, prilikom dodele nove stranice, SQL Server dobija X zaključavanje na novoj stranici. SQL Server će staviti hobt_id (Heap ili B-Tree ID) kome nova stranica pripada u zahtevu za zaključavanje. Međutim, SQL Server ne može da hobt_id u evidenciji preslikavanja i rezultira različitim ponašanjem zaključavanja između primarnog i preslikane kopije. Ovo se može detaljno objasniti na sledeći na sledeći na sledeći na koji možete da objasnite:

  1. T1 držite IX bravu na stranici P1.

  2. T2 uradite razdeljak stranice na P1, dodelite novu stranicu P2, ovde se koristi sistemska transakcija TX, ona drži X bravu na P2. Ovde SQL Server nije stavio hobt_id evidenciji preslikavanja.

  3. TX radi migraciju zaključavanja za T1 da bi premestio IX bravu sa P1 na P2.

  4. TX se obavezao, sada T2 može da koristi Page P2, a T2 da dobije još jednu IX bravu na stranici P2.

  5. T1 se obavezao, sada je T2 jedini koji drži IX bravu na P2.

  6. Nakon mnogo umetanja, dolazi do eskalacije brave, na primarnom, T2 oslobađa IX na P2, ali na ogledalu, tokom eskalacije zaključavanja, T2 nije oslobodio IX bravu.

  7. Nakon mnogo brisanja, Stranica P2 je postala prazna i dilovana je.

  8. T3 je potrebna nova stranica, a dešava se da se dodeli P2, ovo zahteva X bravu, ali na ogledalu ovaj korak nije uspeo zbog koraka 6.

Na ogledalu, Korak 6 ne oslobađa IX bravu jer je hobt_id u zaključanom bloku neispravna. Ovaj netačan hobt_id dolazi tokom koraka 2 i zbog SQL Servera ne stavlja hobt_id u preslikanu evidenciju.Obično ne vidite nikakav problem jer je TX u koraku 2 veoma kratak, a blok zaključavanja sa neispravnim hobt_id će biti objavljen kada se obaveže. Međutim, zbog migracije zaključavanja u koraku3 i sledećih koraka (4 i 5), ovaj zaključani blok sa neispravnim hobt_id je očuvan i konačno izaziva problem. Primarni nema ovaj problem zato što koristi ispravan hobt_id koraku 2. Međutim, zapis evidencije nema ispravan hobt_id.

Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:

Rešenje

Da biste to uradili, ponovo instalirajte ogledalo da biste okončali suspendovani status.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×