Oprava: Zobrazí chyba 605 a chyba 824 při spuštění dotazu vloží data do dočasné tabulky v serveru SQL Server

Platí pro: SQL Server 2008 Service Pack 3

Chyba: #50003826 (SQL Hotfix)
Společnost Microsoft distribuuje opravy Microsoft SQL Server 2008 jako jednoho souboru ke stažení. Protože jsou kumulativní opravy, každá nová verze tedy obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release.

Příznaky


V SQL Server 2008 spustíte dotaz, který vloží data do dočasné tabulky. Příkaz insert obsahuje poddotaz odkazuje stejné dočasné tabulky. Při spuštění dotazu může zobrazit chybová zpráva podobná následující:
Msg 605 úroveň 21, stav 3, řádek 1Attempt o načtení logickou stránku (1:225) v databázi 2 se nezdařilo. Patří k přidělení jednotky 281474980315136, aby 504403158513025024.
Při spuštění dotazu se může zobrazit chybová zpráva podobná následující:
Msg 824, úroveň 24 stav 2, řádek 1
SQL Server zjistil logické vstupně-výstupní chybě konzistence systémem: nesprávná kontrolní součet (očekávání: 0x50758180; skutečné: 0x15658bfc). K němu došlo při čtení stránky (1:336) v databázi ID 2 na posunu 0x000000002a0000 v souboru "C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Další zprávy do serveru SQL Server chybě protokolu nebo systému protokolu událostí může poskytnout více podrobností. To je vážné chybovou podmínku, která ohrožuje integritu databáze a musí být opraveny okamžitě. Proveďte kontrolu konzistence celé databáze (DBCC CHECKDB). Tato chyba může být způsobeno mnoha faktory; Další informace naleznete v tématu SQL Server Books Online.
V některých případech může také zobrazit chybová zpráva podobná následující:
Msg 601, úroveň 12, stav 3, procedury procedure názeva řádku číslo řádkunelze pokračovat v prohledávání s NOLOCK z důvodu přesunu dat.
Je možné dotaz konstrukci, která způsobit tyto chyby:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

Řešení


Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 3. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
960484 Balíček kumulativní aktualizace 3 pro SQL Server 2008
Poznámka Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
956909 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008
Po instalaci tohoto balíčku kumulativní aktualizace, musíte povolit příznak trasování 4135. Chcete-li to provést, můžete přidat -T4135 spouštěcí parametr. Nebo můžete použít příkaz dbcc traceon(4135) pro určitou relaci.

Alternativní řešení


Chcete-li tento problém vyřešit, přidejte sloupec, který má Clusterový primární klíč a vlastnost identity do dočasné tabulky. Například spusťte následující příkaz změnit dočasné tabulky:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Stav


Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Další informace


I když dojde k chybové zprávy, nebo 605 824, databáze není poškozen. Navíc tyto chybové zprávy referenční stránky z databáze tempdb.Další informace o jaké soubory byly změněny a informace o všechny požadavky nutné pro instalaci balíčku kumulativní aktualizace obsahující opravy hotfix popsané v tomto článku znalostní báze Microsoft Knowledge Base klepnutím na následující číslo článku k zobrazení článek znalostní báze Microsoft Knowledge Base:
960484 Balíček kumulativní aktualizace 3 pro SQL Server 2008

Informace o SQL Server 2008 R2 Analyzátoru osvědčených postupů

SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 Analyzátoru osvědčených postupů) obsahuje pravidlo umožňuje zjistit případy, ve kterých jste kumulativní aktualizaci nebo příznak trasování povoleno Chcete-li tento problém vyřešit. SQL Server 2008 R2 Analyzátoru osvědčených postupů podporuje SQL Server 2008 a SQL Server 2008 R2. Je-li spustit nástroj Analyzátor osvědčených postupů a dojde "databázový stroj - tempdb opravit chyby nebo chybějící příznak trasování" upozornění, je třeba zkontrolovat verzi serveru SQL Server a trasování příznaky, které jsou konfigurovány pro povolit tato oprava.

Odkazy

Pravidla softwareNázev pravidlaIdentifikátor pro pravidla
SQL Server 2008 R2 Analyzátoru osvědčených postupů pravidlaOprava chyby v databázi TempDB nebo chybí příznak trasováníRID3808
Poznámka Můžete povolit příznak trasování 4135 nebo příznak trasování 4199 povolit tato oprava. Příznak trasování 4135 byl zaveden v balíčku kumulativní aktualizace 3 pro SQL Server 2008. Příznak trasování 4135 je také k dispozici v aktualizaci Service Pack 1 pro SQL Server 2008, SQL Server 2008 Service Pack 2 a SQL Server 2008 R2. Příznak trasování 4199 byl zaveden v balíčku kumulativní aktualizace 7 pro SQL Server 2008, balíček kumulativní aktualizace 7 pro SQL Server 2008 Service Pack 1 a kumulativní aktualizace 1 pro SQL Server 2008 R2. Další informace o příznak trasování 4199 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
 974006 Příznak trasování 4199 je přidán do ovládacího prvku více změn optimalizace dotazu dříve provedené v rámci více příznaků trasování
Vzhledem k tomu, že oprava tohoto problému vyžaduje kombinaci sestavení konkrétní opravy hotfix a příznak trasování Chcete-li povolit opravu, v následující tabulce zobrazíte různé scénáře a doporučené akce můžete provést pro každý scénář zahrnuje.Další informace o nejnovější sestavení serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
957826 Kde lze najít informace o nejnovější SQL Server vytvoří

Odkazy


Další informace o seznamu sestavení, které jsou k dispozici po vydání serveru SQL Server 2008 klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
956909 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008
Další informace o přírůstkové Model servis pro SQL Server získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
935897 Dílčí Model obsluhy je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže
Další informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server pro
Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft