DetailPage-MSS-KB

기술 자료

기술 자료: 974985 - 마지막 검토: 2010년 4월 26일 월요일 - 수정: 2.0

 
Microsoft는 Microsoft SQL Server 2005 수정 프로그램을 다운로드 가능한 파일로 배포합니다. 수정 누적되는 형태이므로 핫픽스가 모두 각 새 릴리스에 포함되어 있으며 이전 SQL Server 2005에 포함된 모든 보안 릴리스의 수정.

현상

다음과 같은 경우를 생각해 볼 수 있습니다:
  • Microsoft SQL Server 2005의 XML 데이터 형식의 열을 포함하는 테이블이 있습니다.
  • 열을 XML 인덱스를 만듭니다.
  • XML 인덱스를 다시 절과 함께 ALTER INDEX 문을 실행할 수 있습니다.
  • 테이블에서 DBCC CHECKDB 문을 또는 CHECKTABLE DBCC 문을 실행합니다.
이 시나리오에서는 고아 데이터 손상이 보고되고 다음과 같은 오류 메시지가 나타납니다.
메시지 8964, 수준 16, 상태 1, 줄 1
테이블 오류: ID 965578478 개체, 인덱스 ID 1, ID 72057594042515456 ID 72057594052083712 LOB 데이터 형식 할당할 단위 분할합니다. 행 데이터 노드 (1:569) 페이지, 슬롯 0, 텍스트 ID 1881079808 참조되지 않습니다.

행이 3 개체의 "sys.xml_index_nodes_ <xxxxxx>" 1 페이지입니다.

해결 방법

이 문제점에 대한 수정 프로그램은 SQL Server 2005 서비스 팩 3 누적 업데이트를 6에서 처음 발표되었습니다. 이 누적 업데이트 패키지에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
974648  (http://support.microsoft.com/kb/974648/LN/ ) SQL Server 2005 서비스 팩 3 누적 업데이트 패키지 6
참고 빌드 누적되는 형태이므로 새로운 각 수정 릴리스의 모든 핫픽스와 들어 및 이전 SQL Server 2005에 포함된 모든 보안 릴리스의 수정. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오:
960598  (http://support.microsoft.com/kb/960598/LN/ ) SQL Server 2005는 SQL Server 2005 서비스 팩 3 릴리스된 후에 릴리스된 빌드
Microsoft SQL Server 2005 핫픽스가 특정 SQL Server 서비스 팩은 만들 수 있습니다. SQL Server 2005 서비스 팩 3 설치를 위해 SQL Server 2005 서비스 팩 3 핫픽스를 적용해야 합니다. 기본적으로 SQL Server 서비스 팩에 제공된 모든 핫픽스는 다음 SQL Server 서비스 팩이 포함되어 있습니다.

해결 과정

이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오:

방법 1

다음 ALTER INDEX 문을 실행하는 대신, XML 인덱스를 삭제하고 다시 만드십시오.

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



방법 2

모든 XML 인덱스를 제거한 다음 테이블의 인덱스에 대한 ALTER INDEX 문을 실행하십시오. 그런 다음 XML 인덱스를 다시 만듭니다.

현재 상태

Microsoft는 "적용 대상" 절에 나열된 제품에서 문제가 있음을 확인했습니다.

참조

자세한 내용은 SQL Server 증분 서비스 모델을 Microsoft 기술 자료의 다음 문서를 참조하십시오.
935897  (http://support.microsoft.com/kb/935897/ ) 보고된 문제에 대한 핫픽스를 제공하는 SQL Server 팀으로부터 증분 서비스 모델을 사용합니다
대한 자세한 내용은 SQL Server 2005 서비스 팩 3 구하는 방법을 Microsoft 기술 자료의 다음 문서를 참조하십시오.
913089  (http://support.microsoft.com/kb/913089/ ) SQL Server 2005 최신 서비스 팩을 구하는 방법
SQL Server 2005 서비스 팩 3 (SP3) 의 새로운 기능 및 향상된 SQL Server 2005 SP3의 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.
http://go.microsoft.com/fwlink/?LinkId=131442 (http://go.microsoft.com/fwlink/?LinkId=131442)
자세한 내용은 SQL Server 업데이트를 명명 스키마를 Microsoft 기술 자료의 다음 문서를 참조하십시오.
822499  (http://support.microsoft.com/kb/822499/ ) 새 명명 스키마에 Microsoft SQL Server 소프트웨어 업데이트 패키지에 대한
소프트웨어 업데이트 용어에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684  (http://support.microsoft.com/kb/824684/ ) Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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
키워드: 
kbmt kbsurveynew kbexpertiseadvanced kbqfe kbfix KB974985 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:974985  (http://support.microsoft.com/kb/974985/en-us/ )
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.