Chyba: #50003826 (SQL Hotfix)
Microsoft distribuuje opravy systému Microsoft SQL Server 2008 jako jeden soubor ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, obsahuje každá nová verze všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008.
Příznaky
Na serveru SQL Server 2008 spustíte dotaz, který vloží data do dočasné tabulky. Příkaz insert obsahuje poddotaz, který odkazuje na stejnou dočasnou tabulku. Při spuštění dotazu se může zobrazit chybová zpráva podobná této:
Poznámka
Zpráva 605, úroveň 21, stav 3, řádek 1
Pokus o načtení logické stránky (1:225) v databázi 2 se nezdařil. Patří k alokační jednotce 281474980315136 ne k 504403158513025024.
Pokud dotaz spustíte znovu, zobrazí se chybová zpráva podobná této:
Poznámka
- Zpráva 824, úroveň 24, stav 2, řádek 1
- SQL Server zjistili logickou konzistenci I/O error: nesprávný kontrolní součet (očekávaný: 0x50758180; aktuální: 0x15658bfc). Došlo k němu během čtení stránky (1:336) v databázi ID 2 při posunu 0x000000002a0000 v souboru C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Další zprávy v protokolu chyb SQL Server nebo v protokolu událostí systému mohou poskytnout podrobnější informace. Jedná se o závažný chybový stav, který ohrožuje integritu databáze a musí být okamžitě opraven. Dokončete úplnou kontrolu konzistence databáze (DBCC CHECKDB). Tato chyba může být způsobena mnoha faktory; Další informace najdete na webu Knihy online na serveru SQL Server.
V některých případech se také může zobrazit chybová zpráva podobná této:
Poznámka
Zpráva 601, úroveň 12, stav 3, názevpostupu,číslo řádku, číslo řádku
Z důvodu přesunu dat nebylo možné pokračovat v kontrole s funkcí NOLOCK.
Možná konstrukce dotazu, která může způsobit tyto chyby, je následující:
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3
Řešení
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 3. Další informace o získání tohoto balíčku kumulativních aktualizací pro SQL Server 2008 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
960484 Balíček kumulativní aktualizace 3 pro SQL Server 2008Poznámka: Buildy jsou kumulativní, a proto každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
956909 Buildy SQL Server 2008, které byly vydány po vydání SQL Server 2008Po instalaci tohoto balíčku kumulativní aktualizace musíte povolit příznak trasování 4135. Chcete-li to provést, můžete přidat spouštěcí parametr -T4135. Nebo můžete použít příkaz dbcc traceon(4135) pro konkrétní relaci.
Alternativní řešení
Tento problém můžete vyřešit tak, že do dočasné tabulky přidáte sloupec, který obsahuje clusterovaný primární klíč i vlastnost identity. Pokud chcete například změnit dočasnou tabulku, spusťte následující příkaz:
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Další informace
Přestože se zobrazí chybová zpráva 824 nebo 605, nedošlo k poškození databáze. Tyto chybové zprávy také odkazují na stránky z databáze tempdb.
Další informace o měněných souborech a o všech předpokladech použití balíčku kumulativní aktualizace obsahujícího opravu hotfix popsaného v tomto článku znalostní báze znalostní báze Microsoft Knowledge Base naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
960484 Balíček kumulativní aktualizace 3 pro SQL Server 2008
Informace o Analyzátoru osvědčených postupů pro SQL Server 2008 R2
Analyzátor osvědčených postupů pro SQL Server 2008 R2 (SQL Server 2008 R2 BPA) poskytuje pravidlo pro zjištění situací, ve kterých není povolená kumulativní aktualizace nebo příznak trasování pro vyřešení tohoto problému. Analyzátor osvědčených postupů pro SQL Server 2008 R2 podporuje jak SQL Server 2008, tak i SQL Server 2008 R2.
Pokud se při spuštění nástroje Analyzátor osvědčených postupů objeví upozornění "Databázový stroj – oprava chyb databáze tempdb nebo chybějící příznak trasování", je nutné zkontrolovat verzi systému SQL Server a příznaky trasování, které jsou nakonfigurovány tak, aby tuto opravu povolily.
Reference
| Rule software | Název pravidla | Identifikátor pravidla |
|---|---|---|
| Pravidlo Analyzátoru osvědčených postupů pro SQL Server 2008 R2 | tempdb chyby, oprava chybějícího příznaku nebo sledování | RID3808 |
Poznámka: Tuto opravu můžete povolit povolením příznaku trasování 4135 nebo příznaku 4199. Příznak 4135 byl zaveden v balíčku kumulativní aktualizace 3 pro SQL Server 2008. Příznak 4135 je k dispozici také v aktualizacích SQL Server 2008 Service Pack 1, SQL Server 2008 Service Pack 2 a SQL Server 2008 R2. Příznak sledování 4199 byl zaveden v balíčku kumulativní aktualizace 7 pro SQL Server 2008, v balíčku kumulativní aktualizace 7 pro SQL Server 2008 Service Pack 1 a v balíčku kumulativní aktualizace 1 pro SQL Server 2008 R2. Další informace o příznaku 4199 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
974006 Příznak 4199 je přidán k řízení několika změn optimalizátoru dotazů dříve provedených pod několika příznaky trasování. Vzhledem k tomu, že řešení tohoto problému zahrnuje kombinaci konkrétního sestavení opravy hotfix a příznaku trasování, abychom opravu povolili, uvádíme následující tabulku, která ukazuje různé scénáře a doporučené akce, které byste měli v každém scénáři provést.
Další informace o nejnovějších buildech systému SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
957826 Kde najít informace o nejnovějších buildech SQL Server
Reference
Další informace o seznamu buildů, které jsou dostupné po vydání verze systému SQL Server 2008, naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
956909 Buildy SQL Server 2008, které byly vydány po vydání SQL Server 2008
Další informace o modelu přírůstkové údržby pro SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
935897 Tým SQL Server poskytuje k poskytování oprav hotfix pro hlášené problémy model přírůstkové údržby
Další informace o schématu pojmenování aktualizací pro aktualizace serveru SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
822499 Nové schéma pojmenování balíčků aktualizací softwaru Microsoft SQL Server Další informace o terminologii aktualizací softwaru naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
824684 Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft