DBCC UPDATEUSAGE(Transact-SQL)

카탈로그 뷰의 부정확한 페이지와 행 개수를 보고하고 수정합니다. 이러한 부정확성으로 인해 sp_spaceused 시스템 저장 프로시저에서 정확하지 않은 공간 사용 보고서를 반환할 수 있습니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

DBCC UPDATEUSAGE 
(   { database_name | database_id | 0 } 
    [ , { table_name | table_id | view_name | view_id } 
    [ , { index_name | index_id } ] ] 
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ] 

인수

  • database_name | database_id | 0
    공간 사용 통계를 보고하고 수정할 데이터베이스의 이름 또는 ID입니다. 0을 지정하면 현재 데이터베이스가 사용됩니다. 데이터베이스 이름은 식별자에 대한 규칙을 준수해야 합니다.

  • table_name | table_id | view_name | view_id
    공간 사용 통계를 보고하고 수정할 테이블이나 인덱싱된 뷰의 이름 또는 ID입니다. 테이블 및 뷰 이름은 식별자 규칙을 따라야 합니다.

  • index_id | index_name
    사용할 인덱스의 ID 또는 이름입니다. 이 인수를 지정하지 않으면 해당 문에서 지정한 테이블이나 뷰의 모든 인덱스를 처리합니다.

  • WITH
    옵션을 지정할 수 있습니다.

  • NO_INFOMSGS
    모든 정보 메시지를 표시하지 않습니다.

  • COUNT_ROWS
    row count 열이 테이블이나 뷰에 있는 현재 행 개수로 업데이트되도록 지정합니다.

주의

DBCC UPDATEUSAGE는 테이블 또는 인덱스의 각 파티션에 대해 행, 사용된 페이지, 예약된 페이지, 리프 페이지 및 데이터 페이지의 개수를 수정합니다. 시스템 테이블에 부정확한 데이터가 없으면 DBCC UPDATEUSAGE는 데이터를 반환하지 않습니다. 부정확한 데이터를 검색 및 수정하고 WITH NO_INFOMSGS를 사용하지 않았으면 DBCC UPDATEUSAGE는 시스템 테이블에서 업데이트 중인 행과 열을 반환합니다.

페이지 또는 행 개수가 음수일 경우 이를 감지할 수 있도록 DBCC CHECKDB가 개선되었습니다. 감지가 되면 DBCC CHECKDB 출력에 경고와 함께 DBCC UPDATEUSAGE를 실행해 문제를 해결하라는 권장 메시지가 포함됩니다.

최선의 구현 방법

  • SQL Server 2005 이상에서 생성된 데이터베이스에 대해 정기적으로 DBCC UPDATEUSAGE를 실행하거나 DBCC UPDATEUSAGE를 사용하여 한 번 수정된 업그레이드된 데이터베이스에 대해 DBCC UPDATEUSAGE를 실행하지 마십시오. DBCC UPDATEUSAGE는 대형 테이블 또는 데이터베이스에 대해 실행하는 경우 시간이 오래 걸릴 수 있으므로 sp_spaceused에서 반환되는 값이 잘못되었다고 판단되는 경우를 제외하고는 사용하지 않아야 합니다.

  • 데이터베이스에서 CREATE, ALTER 또는 DROP 문과 같은 DDL(데이터 정의 언어) 수정이 자주 발생하는 경우에만 DBCC UPDATEUSAGE를 정기적으로(예: 매주) 실행하십시오.

결과 집합

DBCC UPDATEUSAGE는 다음을 반환합니다(값은 상황에 따라 다름).

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

사용 권한

sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다.

1.현재 데이터베이스의 모든 개체에 대한 페이지나 행 개수 또는 두 가지 모두 업데이트

다음 예에서는 데이터베이스 이름에 0을 지정하고 DBCC UPDATEUSAGE는 현재 데이터베이스에 대해 업데이트된 페이지 및 행 수 정보를 보고합니다.

DBCC UPDATEUSAGE (0);
GO

2.AdventureWorks에 대한 페이지나 행 개수 또는 두 가지를 모두 업데이트하고 정보 메시지를 표시 안 함

다음 예에서는 데이터베이스 이름으로 AdventureWorks2012 를 지정하고 모든 정보 메시지를 표시하지 않습니다.

USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012) WITH NO_INFOMSGS; 
GO

3.Employee 테이블의 페이지나 행 개수 또는 두 가지를 모두 업데이트

다음 예에서는 AdventureWorks2012 데이터베이스의 Employee 테이블에 대해 업데이트된 페이지 또는 행 개수 정보를 보고합니다.

USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012,"HumanResources.Employee");
GO

4.테이블에 있는 특정 인덱스에 대한 페이지나 행 개수 또는 두 가지를 모두 업데이트

다음 예에서는 인덱스 이름으로 IX_Employee_ManagerID를 지정합니다.

USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012, "HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO

참고 항목

참조

DBCC(Transact-SQL)

sp_spaceused(Transact-SQL)

UPDATE STATISTICS(Transact-SQL)