DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 974985 - Última revisão: segunda-feira, 26 de Abril de 2010 - Revisão: 2.0

 
A Microsoft distribui correcções Microsoft SQL Server 2005 como um ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova edição contém todas as correcções e todas as correcções de segurança que foram incluídas com o SQL Server 2005 anteriores corrigir lançamento.

Sintomas

Considere o seguinte cenário:
  • No Microsoft SQL Server 2005, que tem uma tabela que contém uma coluna com o tipo de dados XML.
  • Criar um índice XML na coluna.
  • É executar uma instrução ALTER índice com a cláusula RECONSTRUIR o índice XML.
  • Executar uma instrução DBCC CHECKDB ou uma instrução DBCC CHECKTABLE na tabela.
Neste cenário, são comunicados dados órfãos danos e recebe a seguinte mensagem de erro:
Msg 8964, nível de 16 de estado 1, linha 1
Erro da tabela: ID 965578478 de objecto, indexar ID 1, partition ID 72057594042515456, alloc unidade 72057594052083712 ID (tipo de dados LOB). O nó desactivar linha dados na página (1:569), ranhura 0, texto ID 1881079808 não está referenciado.

Não existem linhas de 3 páginas 1 para o objecto "sys.xml_index_nodes_ <xxxxxx>".

Resolução

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 6 para o SQL Server 2005 Service Pack 3. Para obter mais informações sobre este pacote de actualização cumulativa, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
974648  (http://support.microsoft.com/kb/974648/LN/ ) Pacote de actualização cumulativa 6 para o SQL Server 2005 Service Pack 3
Nota Uma vez que as compilações são cumulativas, cada nova versão da correcção contém todas as correcções e todas as correcções de segurança que foram incluídas com o SQL Server 2005 anteriores corrigir lançamento. A Microsoft recomenda que considerem a aplicação pela mais recente versão de correcção que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
960598  (http://support.microsoft.com/kb/960598/LN/ ) Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 são criadas correcções para service packs do SQL Server específicos. Tem de aplicar uma correcção SQL Server 2005 Service Pack 3 para uma instalação do SQL Server 2005 Service Pack 3. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

Como contornar

Para contornar este problema, utilize um dos seguintes métodos:

Método 1

Largar e, em seguida, recriar o índice de XML em vez de executar a instrução 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-------------- 



Método 2

Largar todos os índices XML e, em seguida, execute a instrução ALTER INDEX sobre os índices da tabela. Em seguida, volte a criar os índices XML.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

Para mais informações sobre o modelo de assistência incremental para o SQL Server, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
935897  (http://support.microsoft.com/kb/935897/ ) Um modelo de assistência incremental está disponível a partir de equipa do SQL Server para proporcionar correcções para problemas comunicados
Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 3, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
913089  (http://support.microsoft.com/kb/913089/ ) Como obter o service pack mais recente para o SQL Server 2005
Para obter mais informações sobre as novas funcionalidades do SQL Server 2005 Service Pack 3 (SP3) e sobre os melhoramentos no SQL Server 2005 SP3, visite o seguinte Web site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442 (http://go.microsoft.com/fwlink/?LinkId=131442)
Para mais informações sobre o esquema de atribuição de nomes para actualizações do SQL Server, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
822499  (http://support.microsoft.com/kb/822499/ ) Novo esquema de nomenclatura para pacotes de actualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia de actualizações de software, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
824684  (http://support.microsoft.com/kb/824684/ ) Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • 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
Palavras-chave: 
kbmt kbsurveynew kbexpertiseadvanced kbqfe kbfix KB974985 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 974985  (http://support.microsoft.com/kb/974985/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft