DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 974985 - Geändert am: Montag, 26. April 2010 - Version: 2.0

 
Microsoft stellt Updates für Microsoft SQL Server 2005 als downloadbare Datei. Da die Updates kumulativ sind, enthält jede neue Version des Hotfixes, und alle Sicherheitsupdates, die mit früheren SQL Server 2005 geliefert wurden beheben Version.

Problembeschreibung

Stellen Sie sich das folgende Szenario vor:
  • In Microsoft SQL Server 2005 müssen Sie eine Tabelle, die eine Spalte mit dem XML-Datentyp enthält.
  • Erstellen Sie einen XML-Index auf die Spalte.
  • Ausführen eine ALTER INDEX-Anweisung mit der REBUILD-Klausel auf die XML-Index.
  • Sie führen eine DBCC CHECKDB-Anweisung oder eine DBCC CHECKTABLE-Anweisung für die Tabelle aus.
In diesem Szenario nicht zugeordneter Daten Beschädigungen werden ausgegeben, und Sie erhalten folgende Fehlermeldung:
Msg 8964, Ebene 16, Status 1, Zeile 1
Tabellenfehler: Objekt-ID 965578478, index-ID 1, Partitionieren ID 72057594042515456, Zm Einheit ID 72057594052083712 (Typ LOB-Daten). Der Knoten deaktivieren Zeilendaten Seite (1:569), die Steckplatz 0, die Text 1881079808-ID nicht verwiesen wird.

In 1 Seiten für das Objekt "sys.xml_index_nodes_ <xxxxxx>" sind 3 Zeilen vorhanden.

Lösung

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Updates 6 für SQL Server 2005 Service Pack 3 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket klicken Sie auf die folgende KB-Artikelnummer:
974648  (http://support.microsoft.com/kb/974648/LN/ ) Kumulatives Updatepaket 6 für SQL Server 2005 Service Pack 3
Hinweis: Da die Builds kumulativ sind, enthält jede neue Update-Version des Hotfixes, und alle Sicherheitsupdates, die mit früheren SQL Server 2005 geliefert wurden beheben Version. Microsoft empfiehlt, dass Sie in Betracht ziehen Anwenden der neuesten Update-Version, die diesen Hotfix enthält. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
960598  (http://support.microsoft.com/kb/960598/LN/ ) SQL Server 2005 erstellt, die nach der Veröffentlichung von SQL Server 2005 Service Pack 3 veröffentlicht wurden
Microsoft SQL Server 2005-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen einen SQL Server 2005 Service Pack 3 Hotfix auf eine Installation von SQL Server 2005 Service Pack 3 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack zur Verfügung gestellt wird in das nächste Servicepack für SQL Server enthalten.

Abhilfe

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden:

Methode 1

Löschen Sie und dann neu erstellen Sie den XML-Index statt ALTER INDEX-Anweisung auszuführen:

--------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-------------- 



Methode 2

Alle XML-Indizes gelöscht, und führen Sie dann auf die Indizes in der Tabelle die ALTER INDEX-Anweisung. Wählen Sie dann erstellen Sie die XML-Indizes neu.

Status

Microsoft hat bestätigt, dass dies ein Problem in der Microsoft-Produkten handelt, die im Abschnitt "Beziehen sich auf" aufgeführt sind.

Informationsquellen

Weitere Informationen der inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgende KB-Artikelnummer:
935897  (http://support.microsoft.com/kb/935897/ ) Ein inkrementelles Dienstmodell ist vom SQL Server-Team zum Übermitteln von Hotfixes für gemeldete Probleme verfügbar
Weitere Informationen zum SQL Server 2005 Service Pack 3 zu erhalten, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
913089  (http://support.microsoft.com/kb/913089/ ) So erhalten Sie das neueste Servicepack für SQL Server 2005
Weitere Informationen über die neuen Features in SQL Server 2005 Service Pack 3 (SP3) und die Verbesserungen in SQL Server 2005 SP3 finden Sie auf folgender Website von Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442 (http://go.microsoft.com/fwlink/?LinkId=131442)
Weitere Informationen das Benennungsschema für SQL Server-Updates finden Sie die folgende KB-Artikelnummer:
822499  (http://support.microsoft.com/kb/822499/ ) Neues Benennungsschema für Softwareupdate-Pakete von Microsoft SQL Server
Weitere Informationen zur Terminologie für Softwareupdates finden Sie die folgende KB-Artikelnummer:
824684  (http://support.microsoft.com/kb/824684/ ) Erläuterung von Standardbegriffen bei Microsoft Softwareupdates

Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbsurveynew kbexpertiseadvanced kbqfe kbfix KB974985 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 974985  (http://support.microsoft.com/kb/974985/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: