DBCC UPDATEUSAGE(Transact-SQL)

카탈로그 뷰의 부정확한 페이지와 행 개수를 보고하고 수정합니다. 이러한 부정확성으로 인해 sp_spaceused 시스템 저장 프로시저에서 정확하지 않은 공간 사용 보고서를 반환할 수 있습니다. SQL Server 2005에서 이러한 값은 항상 올바르게 유지 관리됩니다. SQL Server 2005에서 만든 데이터베이스에서는 개수가 부정확한 경우가 없지만 SQL Server 2005로 업그레이드한 데이터베이스에는 올바르지 않은 개수가 포함될 수 있습니다. SQL Server 2005로 업그레이드한 후 DBCC UPDATEUSAGE를 실행하여 올바르지 않은 개수를 수정하는 것이 좋습니다.

항목 링크 아이콘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 execution completed. If DBCC printed error messages, contact your system administrator.

주의

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

공간 사용 카운터를 동기화하려면 DBCC UPDATEUSAGE를 사용합니다. DBCC UPDATEUSAGE를 대용량 테이블이나 데이터베이스에서 실행하려면 시간이 오래 걸리므로 sp_spaceused에서 반환되는 값이 부정확하다고 생각될 경우에만 사용해야 합니다. sp_spaceused가 테이블이나 인덱스에 대한 공간 정보를 반환하기 전에 DBCC UPDATEUSAGE를 실행하려면 선택적 매개 변수를 사용합니다.

데이터베이스 업그레이드

이전 버전의 SQL Server에서는 테이블 및 인덱스의 행 및 페이지 개수의 값이 정확하지 않게 계산될 수 있습니다. SQL Server 2005 이전 버전에서 만든 데이터베이스에는 올바르지 않은 개수가 포함될 수 있습니다. 따라서 SQL Server 2005로 업그레이드한 후 DBCC UPDATEUSAGE를 실행하여 올바르지 않은 개수를 수정하는 것이 좋습니다.

SQL Server 2005에서는 페이지 또는 행 개수가 음수일 경우 이를 감지할 수 있도록 DBCC CHECKDB가 개선되었습니다. 감지가 되면 DBCC CHECKDB 출력에 경고와 함께 DBCC UPDATEUSAGE를 실행해 문제를 해결하라는 권장 메시지가 포함됩니다. 이러한 문제는 데이터베이스를 SQL Server 2005로 업그레이드해서가 아니라 그 전부터 개수에 오류가 있었기 때문에 발생합니다.

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

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

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

DBCC UPDATEUSAGE (0);
GO

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

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

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

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

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

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

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

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

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

참고 항목

참조

DBCC(Transact-SQL)
sp_spaceused(Transact-SQL)
sys.sysindexes(Transact-SQL)
UPDATE STATISTICS(Transact-SQL)

관련 자료

테이블 및 인덱스 아키텍처
방법: 분리 및 연결을 사용하여 데이터베이스 업그레이드(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기