현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

FIX: SQL Server 2005에서 XML 인덱스를 다시 작성하는 후 A "DBCC CHECKDB" 문 또는 문 "DBCC CHECKTABLE" 오류를 보고하는합니다

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

이 문서의 영문 버전 보기:974985
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 기술 자료의 다음 문서를 참조하십시오.
974648SQL Server 2005 서비스 팩 3 누적 업데이트 패키지 6
참고 빌드 누적되는 형태이므로 새로운 각 수정 릴리스의 모든 핫픽스와 들어 및 이전 SQL Server 2005에 포함된 모든 보안 릴리스의 수정. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오:
960598SQL 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 TempSELECT 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 iINNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_idINNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND c.column_id = ic.column_idOrder 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_ONLYFOR select 'Drop Index '+ IndexName +' on '+Object_name from temp where Secondary_type is nullDECLARE @DropString varchar(400)OPEN XMLIndexDropFETCH NEXT FROM XMLIndexDrop INTO @DropStringWHILE (@@fetch_status <> -1)BEGINIF (@@fetch_status <> -2)BEGINexec(@DropString)PRINT @DropStringENDFETCH NEXT FROM XMLIndexDrop INTO @DropStringENDCLOSE XMLIndexDropDEALLOCATE XMLIndexDropGO--------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 AscDECLARE @CreateString varchar(400)OPEN XMLIndexCreateFETCH NEXT FROM XMLIndexCreate INTO @CreateString WHILE (@@fetch_status <> -1)BEGINIF (@@fetch_status <> -2)BEGINexec(@CreateString )PRINT @CreateString ENDFETCH NEXT FROM XMLIndexCreate INTO @CreateString ENDCLOSE XMLIndexCreateDEALLOCATE XMLIndexCreateGO--------Closing the cursor----------------------END OF THE SCRIPT-------------- 


방법 2

모든 XML 인덱스를 제거한 다음 테이블의 인덱스에 대한 ALTER INDEX 문을 실행하십시오. 그런 다음 XML 인덱스를 다시 만듭니다.
현재 상태
Microsoft는 "적용 대상" 절에 나열된 제품에서 문제가 있음을 확인했습니다.
참조
자세한 내용은 SQL Server 증분 서비스 모델을 Microsoft 기술 자료의 다음 문서를 참조하십시오.
935897보고된 문제에 대한 핫픽스를 제공하는 SQL Server 팀으로부터 증분 서비스 모델을 사용합니다
대한 자세한 내용은 SQL Server 2005 서비스 팩 3 구하는 방법을 Microsoft 기술 자료의 다음 문서를 참조하십시오.
913089SQL Server 2005 최신 서비스 팩을 구하는 방법
SQL Server 2005 서비스 팩 3 (SP3) 의 새로운 기능 및 향상된 SQL Server 2005 SP3의 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오. 자세한 내용은 SQL Server 업데이트를 명명 스키마를 Microsoft 기술 자료의 다음 문서를 참조하십시오.
822499새 명명 스키마에 Microsoft SQL Server 소프트웨어 업데이트 패키지에 대한
소프트웨어 업데이트 용어에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 974985 - 마지막 검토: 04/26/2010 17:52:43 - 수정: 2.0

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
피드백
s"> html>ml>&t=">ttps://c1.microsoft.com/c.gif?DI=4050&did=1&t=">= 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("