Oprava: Dotaz s nastavena na čtení NESVĚŘENÉ úroveň izolace transakcí selže s chybou 601

CHYBA Č: 363988 (SHILOH_BUGS)

Příznaky

Při spuštění dotazu s jeho úroveň izolace transakce nastavena na čtení NESVĚŘENÉ serveru SQL Server 2000 přeruší dotaz a vrátí následující chybovou zprávu:

Server: Msg 601, úroveň 12, stav 3, řádek 14
Skenování s NOLOCK z důvodu přesunu dat nemůže pokračovat.

Příčina

K tomuto chování může dojít při odstranění řádku v tabulce mezi SQL Server přečte umístění řádku z indexu čas a čas, kdy SQL Server načte řádek.

Řešení

Informace o aktualizaci Service pack

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft SQL Server 2000. Další informace získáte kliknutím na následující číslo v článku databáze Microsoft Knowledge Base:
290211 jak získat nejnovější aktualizaci service pack pro SQL Server 2000

Informace o opravě hotfix

Anglická verze této opravy hotfix má atributy (nebo pozdější atributy souborů) uvedené v následující tabulce. Kalendářní data a časy jednotlivých souborů jsou uvedeny v koordinovaném světovém čase (UTC). Při zobrazení informací o souboru je převeden na místní čas. Rozdíl mezi časem UTC a místním časem, naleznete na kartě časové pásmo na panelu Datum a čas v okně Ovládací panely.
DateTimeVersionSize File name
-----------------------------------------------------------------------------

07-Feb-200316:14 786,432 bytes Distmdl.ldf
07-Feb-200316:142,359,296 bytes Distmdl.mdf
29-Jan-200312:25 180 bytes Drop_repl_hotfix.sql
31-Jan-200311:022000.80.763.01,557,052 bytes Dtsui.dll
29-Jan-200315:48 746,470 bytes Instdist.sql
29-Jan-200312:25 1,402 bytes Inst_repl_hotfix.sql
07-Feb-200317:102000.80.765.0 90,692 bytes Msgprox.dll
29-Jan-200311:487.0.9466.0 344,064 bytes Msvcr70.dll
29-Jan-200311:482000.80.722.0 57,904 bytes Osql.exe
07-Feb-200314:23 1,065,895 bytes Replmerg.sql
07-Feb-200317:102000.80.765.0 221,768 bytes Replprov.dll
07-Feb-200317:102000.80.765.0 307,784 bytes Replrec.dll
29-Jan-200315:48 1,084,318 bytes Replsys.sql
29-Jan-200311:482000.80.534.0 127,548 bytes Sqdedev.dll
07-Feb-200317:102000.80.765.0 176,696 bytes Sqlmap70.dll
07-Feb-200317:102000.80.765.0 57,920 bytes Sqlrepss.dll
14-Feb-200313:222000.80.769.0 7,512,145 bytes Sqlservr.exe
29-Jan-200311:482000.80.194.0 180,290 bytes Sqlunirl.dll
07-Feb-200317:102000.80.765.0 45,644 bytes Sqlvdi.dll
07-Feb-200317:102000.80.765.0 82,492 bytes Ssnetlib.dll

Poznámka: Vzhledem k závislostem souborů může nejnovější oprava hotfix nebo funkce, která obsahuje soubory také obsahovat další soubory.

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části "Platí pro". Tento problém byl poprvé opraven v Microsoft SQL Server 2000 Service Pack 4.

Další informace

Po instalaci opravy hotfix můžete příznak trasování 9134 změňte chování serveru SQL Server. Chcete-li povolit příznak trasování 9134 tak, že je zapnuta při spuštění serveru SQL, přidat příznak trasování jako spouštěcí parametr serveru SQL Server. Chcete-li přidat příznak trasování 9134 jako spouštěcí parametr serveru SQL Server, postupujte takto:
  1. V programu SQL Server Enterprise Manager klepněte pravým tlačítkem myši na server, který je spuštěn SQL Server a potom klepněte na tlačítko
    Vlastnosti.
  2. Na kartě Obecné klepněte na tlačítko Parametry spouštění.
  3. Do textového pole parametru zadejte
    -T9134, klepněte na tlačítko Přidata potom klepněte na tlačítko
    OK.
  4. V dialogovém okně SQL Server Properties(Configure) - <Název serveru> klepněte na tlačítko OK.
  5. Po restartování služby serveru SQL Server nový parametr se projeví.
Jako alternativu můžete spuštěním následujícího dotazu v Query Analyzer dynamicky zapnout příznak trasování:
DBCC TRACEON (9134, -1)
Pokud nepřidáte jako spouštěcí parametr příznak trasování 9134, efekt příkazu DBCC TRACEON je však ztraceny při restartování služby serveru SQL Server.

Při zapnuté příznak trasování 9134 a řádek je odstranit nebo změnit mezi SQL Server přečte umístění řádku čas a čas, kdy ji načte řádku pomocí vyhledání záložky, dotaz nesmí přerušit nebo vrátíte 601 chyba. Místo toho SQL Server ignoruje řádek, který nelze najít a pokračuje ve skenování pro další řádky, které splňují kritéria dotazu. Proto pokračuje v provádění dotazu; SQL Server vrátí výsledky však nemusí obsahovat řádky, které byly odstraněny nebo přesunuty během spuštění dotazu.

Poznámka: Informace v tomto článku a trasování příznak se vztahuje pouze na dotaz spuštění s úroveň izolace transakce nastavena na čtení NESVĚŘENÉ. Tyto informace se nevztahuje na dotaz, který je spuštěn s Rada Optimalizátor NOLOCK. V takovém případě zůstane nezměněn od co je popsáno v části "Příznaky" chování.

Příznak trasování, nemá vliv skutečnost, že jiné chyby a data nekonzistence může dojít při čtení nesvěřené data. Další informace o úrovních izolace podporované SQL Server a vliv použití jednotlivých úrovních izolace naleznete v tématu "Uzamykání" v SQL Server Books Online.

Společnost Microsoft nedoporučuje použití tohoto příznaku trasování, pokud platí všechny následující:
  • Aplikace používá vyžaduje ČÍST NESVĚŘENÉ úroveň izolace.
  • Aplikace používá dochází k velkému počtu 601 chyby.
  • Víte, že při použití příznaku trasování jsou ignorovány řádky, které byly odstraněny nebo přesunuty během spuštění dotazu.
Poznámka: Před použitím ČÍST NESVĚŘENÉ úroveň izolace, je třeba pochopit jeho funkce. Další informace o čtení NESVĚŘENÉ úroveň izolace naleznete následujícím webu Microsoft Developer Network (MSDN):

Odkazy

Další informace získáte kliknutím na následující číslo v článku databáze Microsoft Knowledge Base:
235880 INF: optimalizace nápovědy NOLOCK nebo izolace úroveň čtení UNCOMMITTED generuje chyba 605
Další informace naleznete na následujících webech MSDN:
Vlastnosti

ID článku: 815008 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor