본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아닐 수 있습니다. 참고만 하시고 궁금한 사항이 있으시면 연락주세요.

티스토리 뷰

exec sp_sapceused [TableName] 실행하면

해당 테이블의 테이블행수, 테이블크기, 인덱스크기등을 확인 할 수 있다.

하지만 한 개의 테이블의 정보만 확인 할 수 있다.

아래와 같이 sp_Msforeachtable 프로시져를 사용하여 해당 데이터베이스의 테이블 전체의 정보를 확인 할 수 있다.

원래 내가 하고 싶었던 것은 아래와 같이 템프성 테이블들이 10000개정도 있을때 행수가 없는 테이블들을 삭제하고 싶어서 아래 쿼리를 사용을 하였다.

 

<해당 데이터베이스의 모든 테이블의 행수, 크기 구하기>

CREATE TABLE #TableSize (

    Name varchar(255),

    [rows] int,

    reserved varchar(255),

    data varchar(255),

    index_size varchar(255),

    unused varchar(255))

CREATE TABLE #ConvertedSizes (

    Name varchar(255),

    [rows] int,

    reservedKB int,

    dataKB int,

    reservedIndexSizeKB int,

    reservedUnusedKB int)

 

EXEC sp_MSforeachtable @command1="insert into #TableSize EXEC sp_spaceused '?'";

 

INSERT INTO #ConvertedSizes (Name, [rows], reservedKb, dataKb, reservedIndexSizeKB, reservedUnusedKB)

SELECT name, [rows],

SUBSTRING(reserved, 0, LEN(reserved)-2),

SUBSTRING(data, 0, LEN(data)-2),

SUBSTRING(index_size, 0, LEN(index_size)-2),

SUBSTRING(unused, 0, LEN(unused)-2)

FROM #TableSize;

 

SELECT * FROM #ConvertedSizes

ORDER BY reservedKb desc;

GO

 

--DROP TABLE #TableSize

--DROP TABLE #ConvertedSizes

[참고문서]
sp_spaceused(Transact-SQL)
https://msdn.microsoft.com/ko-kr/library/ms188776.aspx

 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday