대부분의 사람들이 GUI(오른쪽 클릭 테이블, 속성)를 통해 이 작업을 수행하는 방법을 알고 있다고 생각하지만, T-SQL에서 이 작업을 수행하는 것은 완전히 엉망입니다.
CREATE TABLE #tmpSizeChar ( TABLE_NAME SYSNAME , row_count int, reserved_size varchar(50), data_size varchar(50), INDEX_SIZE varchar(50), UNUSED_SIZE VARCHAR(50))CREATE TABLE #tmpSizeInt ( TABLE_NAME SYSNAME , row_count int, reserved_size_KB int, data_size_KB int, index_size_KB int, unused_size_KB int)
SET NOCOUNT ON INSERT #tmpSizeChar EXEC sp_msforeachtable 'sp_spaceused ''?'' '
INSERT INTO #tmpSizeInt ( table_name, row_count, reserved_size_KB, data_size_KB, index_size_KB, unused_size_KB ) SELECT [table_name], row_count, CAST(SUBSTRING(reserved_size, 0, PATINDEX('% %', reserved_size)) AS int)reserved_size, CAST(SUBSTRING(data_size, 0, PATINDEX('% %', data_size)) AS int)data_size, CAST(SUBSTRING(index_size, 0, PATINDEX('% %', index_size)) AS int)index_size, CAST(SUBSTRING(unused_size, 0, PATINDEX('% %', unused_size)) AS int)unused_size FROM #tmpSizeChar
/ DROP TABLE #tmpSizeChar DROP TABLE #tmpSizeInt /
SELECT * FROM #tmpSizeInt ORDER BY reserved_size_KB DESC
2005에서 작동하는 것으로 알고 있습니다(Microsoft 설명서):
다음은 pubs DB에 대한 것입니다. < pre< < code<; 선택 * 를 선택합니다.
size와 max_size를 반환합니다.