DotyczySQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Symptomy

Rozpatrzmy następujący scenariusz:

  • Masz bazę danych programu Microsoft SQL Server 2012 z włączonymi opcjami ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT .

  • Masz co najmniej trzy jednoczesne kwerendy, które są uruchamiane w tej samej tabeli.

  • W kwerendach jest używana Wskazówka dotycząca kwerendy (TABLOCK, UPDLOCK) .

  • Wszystkie zapytania są zawijane w jawnej instrukcji BEGIN Trans, ale instrukcja commit transładunek nie jest wykonywana.

Gdy pierwsza kwerenda zostanie zatwierdzona w tym scenariuszu, jedna z pozostałych zapytań zostanie zakleszczenia. Gdy READ_COMMITTED_SNAPSHOT jest włączony wraz z wskazówkami dotyczącymi zapytań TABLOCK i UPDLOCK , sesje zajmują w tabeli do IX blokad. Zakleszczenie następuje wtedy, gdy dwie sesje współbieżne próbują ponownie przekonwertować blokadę IX na X blokadę X w tym samym czasie. Jeśli READ_COMMITTED_SNAPSHOT jest wyłączona, sesje uzyskają sześć blokad, które nie będą zakleszczeni po przekonwertowaniu na blokady X. Poprawka eliminuje to zachowanie przez udzielenie LCK_M_SCH_S blokad zamiast IX blokad, gdy READ_COMMITTED_SNAPSHOT jest używana z wskazówkami TABLOCK i UPDLOCK .UwagaTen problem występuje również w programie Microsoft SQL Server 2008 R2. Poprawka dla programu SQL Server 2008 R2 zostanie wkrótce opublikowana.

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.