Oprava: Prohlášení "DBCC CHECKDB" nebo "CHECKTABLE DBCC" prohlášení hlásí chyby po opětovném vytvoření indexu XML v serveru SQL Server 2005

Překlady článku Překlady článku
ID článku: 974985 - Produkty, které se vztahují k tomuto článku.
Společnost Microsoft distribuuje opravy 2005 Microsoft SQL Server jako jeden soubor ke stažení. Vzhledem k tomu, že jsou kumulativní opravy, každá nová verze obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí serveru SQL Server 2005, opravte uvolnění.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Předpokládejme následující situaci:
  • V Microsoft SQL Server 2005 máte tabulku obsahující sloupec s typem dat XML.
  • Vytvoříte XML index na sloupci.
  • Spuštěním příkazu ALTER INDEX s klauzulí znovu SESTAVIT na XML index.
  • Spuštění příkazu DBCC CHECKDB nebo CHECKTABLE DBCC prohlášení v tabulce.
V tomto scénáři jsou hlášeny poškození dat pro vzácná onemocnění a zobrazí následující chybová zpráva:
Msg 8964, úroveň 16 stavu 1, řádek 1
Tabulka Chyba: objekt ID 965578478, index ID 1, oddíl ID 72057594042515456, jednotky přiřazení ID 72057594052083712 (typ obchodní data). Uzel vypnutí řádku dat na stránku (1:569), slotu 0, text ID 1881079808 neexistuje odkaz.

V 1 stránek pro objekt "sys.xml_index_nodes_ <xxxxxx>" neexistují 3 řádky.

Řešení

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 6 pro SQL Server 2005 Service Pack 3. Další informace o této kumulativní aktualizaci balíčku získáte následujícím článku báze Microsoft Knowledge Base:
974648Balíček kumulativní aktualizace 6 pro SQL Server 2005 Service Pack 3
Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí serveru SQL Server 2005, opravte uvolnění. Společnost Microsoft doporučuje zvážit použití nejnovější vydání opravy, které tato oprava hotfix. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
960598SQL Server 2005 vytvoří vydané po vydání SQL Server 2005 Service Pack 3
Opravy hotfix Microsoft SQL Server 2005 jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. K instalaci aktualizace SQL Server 2005 Service Pack 3 je třeba použít opravu hotfix SQL Server 2005 Service Pack 3. Ve výchozím nastavení žádné opravy hotfix, která je poskytována v aktualizace service pack pro SQL Server je součástí příští aktualizace service pack pro SQL Server.

Jak potíže obejít

Pro řešení tohoto problému, použijte jednu z následujících metod:

Metoda 1

Přetažení a potom znovu vytvořte index XML namísto spuštění příkazu ALTER INDEX:

--------START OF THE SCRIPT--------------

----------Drop table named temp if it exists----------------
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[temp]') AND type in (N'U'))
DROP TABLE [dbo].[temp]


------------Create a tenp table to keep the information about existing XML indexes------------
Create table Temp (object_id int, index_id int, object_name varchar(256), IndexName nvarchar(256),Name nvarchar(256),
Secondary_type_desc nvarchar (240),Secondary_type char(1),Using_Xml_index_id int)


------------Insert XML index information into temp table----------------
Insert Into Temp
SELECT i.object_id,i.index_id,object_name(i.object_id)as object_name, i.name as IndexName
,c.name,i.Secondary_type_desc,i.Secondary_type,i.using_xml_index_id 
FROM sys.xml_indexes AS i
INNER JOIN sys.index_columns AS ic 
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns AS c 
ON ic.object_id = c.object_id AND c.column_id = ic.column_id
Order by i.index_id



-------------Adding a new column for Manipulation------------
Alter table temp add IndName varchar(256) NULL;


-------------Updating value in column for Manipulation------------

Update Temp Set Secondary_type_desc = 'APRIMARY' Where Secondary_type_desc IS NULL



-------------Updating value in column for Manupilation------------

Update a set a.IndName = b.IndexName from temp a inner join temp b on a.using_xml_index_id = b.index_id and a.object_id = b.object_id



-------------Set Ansi_padding ON to create XML indexes------------

Set Ansi_Padding ON



--------Cursor to Drop existing XML Indexes------------

DECLARE XMLIndexDrop CURSOR 
READ_ONLY
FOR select 'Drop Index '+ IndexName +' on '+Object_name from temp where Secondary_type is null
DECLARE @DropString varchar(400)

OPEN XMLIndexDrop
FETCH NEXT FROM XMLIndexDrop INTO @DropString
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
exec(@DropString)
PRINT @DropString
END
FETCH NEXT FROM XMLIndexDrop INTO @DropString
END

CLOSE XMLIndexDrop

DEALLOCATE XMLIndexDrop
GO



--------Cursor to Create XML Indexes-------------

DECLARE XMLIndexCreate CURSOR 
READ_ONLY 
FOR Select 'CREATE ' + Case when Secondary_type_desc = 'APRIMARY' then 'PRIMARY XML'
Else 'XML' END + ' INDEX ' + IndexName +' on ' + object_name + ' ('+name+')'
+ Case when Secondary_type_desc = 'APRIMARY' then ''
Else ' USING XML INDEX ' + IndName + ' FOR ' + Secondary_type_desc END 
From Temp Order By Secondary_type_desc Asc

DECLARE @CreateString varchar(400)
OPEN XMLIndexCreate

FETCH NEXT FROM XMLIndexCreate INTO @CreateString 
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
exec(@CreateString )
PRINT @CreateString 
END
FETCH NEXT FROM XMLIndexCreate INTO @CreateString 
END


CLOSE XMLIndexCreate
DEALLOCATE XMLIndexCreate
GO


--------Closing the cursor--------------


--------END OF THE SCRIPT-------------- 



Metoda 2

Vynechat všechny indexy XML a potom spusťte příkaz ALTER INDEX na indexy v tabulce. Potom znovu vytvořit indexy XML.

Prohlášení

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.

Odkazy

Další informace o přírůstkové obsluhovaní model pro SQL Server naleznete následující článku znalostní báze Microsoft Knowledge Base:
935897Přírůstkové modelu obsluhovaní je k dispozici tým serveru SQL Server dodat opravy hotfix pro nahlášené potíže
Další informace o získání aktualizace SQL Server 2005 Service Pack 3 získáte v článku znalostní báze Microsoft Knowledge Base:
913089Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Další informace o nových funkcích v aktualizaci SQL Server 2005 Service Pack 3 (SP3) a o vylepšeních v aktualizaci SQL Server 2005 SP3 navštivte následující web společnosti Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442
Další informace o schéma názvů pro aktualizace serveru SQL Server, naleznete následujících článku znalostní báze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server
Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 974985 - Poslední aktualizace: 26. dubna 2010 - Revize: 2.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Klíčová slova: 
kbmt kbsurveynew kbexpertiseadvanced kbqfe kbfix KB974985 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:974985

Dejte nám zpětnou vazbu

 

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