DBCC UPDATEUSAGE(Transact-SQL)
카탈로그 뷰의 부정확한 페이지와 행 개수를 보고하고 수정합니다. 이러한 부정확성으로 인해 sp_spaceused 시스템 저장 프로시저에서 정확하지 않은 공간 사용 보고서를 반환할 수 있습니다.
구문
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