FIX: Pomalý výkon alebo zablokovanie keď obnoviť databázu a spustiť vyhlásenia v rovnakom čase v SQL Server 2012

Preklady článku Preklady článku
ID článku: 2725950 - Zobraziť produkty, ktorých sa tento článok týka.
Spoločnosť Microsoft distribuuje Microsoft SQL Server 2012 opravy ako jeden súbor na stiahnutie. Pretože opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchlych a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej SQL Server 2012 opraviť uvoľnenia.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Príznaky

Scenár č.1

Uvažujme o nasledujúcom prípade:
  • Obnovovaní databázy Microsoft SQL Server 2012.
  • Pred operácie obnovenia databázy je hotová, iný proces odkazuje sys.database_recovery_status katalóg názor a vyžaduje zámok v rovnakej databáze. Napríklad spustíte nasledujúce vyhlásenie Vyberte :

    SELECT * FROM sys.database_recovery_status
V takomto prípade pomalý výkon sa vyskytuje, v ktorom proces pre vyhlásenie Vyberte počká kým skončí proces obnovenia databázy.

Scenár 2

Uvažujme o nasledujúcom prípade:
  • Obnovovaní databázy SQL Server 2012.
  • Pred operácie obnovenia databázy je dokončená, ste vykonať nasledovné vyhlásenie:

    IF EXISTS (SELECT * FROM sys.database_recovery_status WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
    Poznámka: The DataBaseID predstavuje Identifikátor databázy na ktoré vykonáte operáciu obnovenia databázy.
V takomto prípade nastane zablokovanie v procese obnovenia databázy. Toto zablokovanie spôsobí proces obnovenia databázy na neúspech.

Príčina

Dva scenáre, ktoré sú opísané v časti "Príznaky" spôsobujú rovnaké príčiny.

V sekcii "Scenario1" problém sa vyskytuje, pretože proces obnovenia databázy vyžaduje výhradný prístup na databázu. Keď spustíte príkaz, ktorý je popísaný v tejto časti, zdieľané zámku sa vyžaduje v rovnakej databáze. Preto zdieľané zámky čaká exkluzívny zámok, kým exkluzívny zámok je prepustený.

V sekcii "Scenár 2", keď sa spustiť príkaz, ktorý je popísaný v tomto oddieli zdieľané zámku sa vyžaduje aj na tej istej databázy v sys.sysdbreg tabuľke. V poslednej fáze procesu obnovenia databázy, proces vyžaduje aktualizáciu zámok na sys.sysdbreg stole. Zdieľané zámky však nie je uvoľnený z databázy. Preto nastane zablokovanie na sys.sysdbreg stôl, a proces obnovenia databázy je odhodlaný byť obeť zablokovanie.

Riešenie

Kumulatívna aktualizácia informácie

Kumulatívna aktualizácia balíka 1 pre SQL Server 2012 Service Pack 1

Fix pre tento problém bol prvýkrát vydaný v Kumulatívna aktualizácia 1. Ďalšie informácie o možnostiach získania tento balík Kumulatívna aktualizácia pre SQL Server 2012 Service Pack 1 nájdete po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2765331 Kumulatívna aktualizácia balíka 1 pre SQL Server 2012 Service Pack 1
Poznámka Pretože stavia sú kumulatívne, každé nové opraviť vydanie obsahuje všetky rýchlych a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej SQL Server 2012 opraviť uvoľnenia. Odporúčame, aby sa domnievate, uplatňovaní najnovších opraviť vydanie, ktorá obsahuje túto rýchlu opravu. Ďalšie informácie získate po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2772858 SQL Server 2012 stavia, ktoré boli vydané po SQL Server 2012 Service Pack 1 bola vydaná

Balík Kumulatívna aktualizácia 3 pre SQL Server 2012

Fix pre tento problém bol prvýkrát vydaný v Kumulatívna aktualizácia 3. Ďalšie informácie o možnostiach získania tento balík Kumulatívna aktualizácia pre SQL Server 2012 nájdete po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2723749 Kumulatívna aktualizácia 3 pre SQL Server 2012
Poznámka Pretože stavia sú kumulatívne, každé nové opraviť vydanie obsahuje všetky rýchlych a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej SQL Server 2012 opraviť uvoľnenia. Odporúčame, aby sa domnievate, uplatňovaní najnovších opraviť vydanie, ktorá obsahuje túto rýchlu opravu. Ďalšie informácie získate po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2692828 SQL Server 2012 stavia, ktoré boli uvoľnené po bola vydaná SQL Server 2012

Stav

Spoločnosť Microsoft potvrdila, že ide o problém produktov spoločnosti Microsoft uvedených v časti "Vzťahuje sa na".

Ako problém obísť

Problém v scenári 2 obísť, použite jeden z nasledujúcich metód.
Metóda 1


Upraviť vyhlásenie vyhnúť zdieľané zámok na sys.sysdbreg stôl pomocou "NOLOCK" nádychom.
IF EXISTS (SELECT * FROM sys.database_recovery_status with(NOLOCK) WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
Metóda 2
Nastaviť prioritu zablokovanie vyhlásenie "Nízka"
SET DEADLOCK_PRIORITY LOW
IF EXISTS(SELECT * FROM sys.database_recovery_status where database_id = DataBaseID AND database_guid IS NOT NULL)
Poznámka: Keď sa zabránilo uviaznutiu vo výkaze a v procese obnovenia databázy pomocou druhá metóda, kódy v príkaze IF sa nespustia.

Odkazy

Ďalšie informácie o exkluzívny zámok, zdieľané lock a aktualizácia lock, nájdete nasledujúce webovú lokalitu MSDN:
Všeobecné informácie o zámok režimy
Ďalšie informácie prírastkové obsluhe Model pre SQL Server nájdete po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
935897 Prírastkové obsluhe Model je k dispozícii z SQL Server tímu dodať rýchlych opráv pre nahlásených problémov
Ďalšie informácie o schéme pomenovanie pre SQL Server aktualizácie, kliknite na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
822499 Pomenovanie schémy pre balíky aktualizácií softvéru servera Microsoft SQL Server
Ďalšie informácie o terminológii aktualizácii softvéru získate po kliknutí na nasledujúce číslo článku publikovaného v databáze Microsoft Knowledge Base:
824684 Popis štandardnej terminológie použitej na popis aktualizácií softvéru od spoločnosti Microsoft

Vlastnosti

ID článku: 2725950 - Posledná kontrola: 20. novembra 2012 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
Kľúčové slová: 
kbtshoot kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2725950 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 2725950

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com