본문 바로가기

카테고리 없음

MS-SQL 2008 R2에서 현재 사용 중인 테이블을 정리하는 방법

1. 현재 데이터베이스의 테이블 목록 확인
(1) 시스템 뷰로 확인하기

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME;

MS-SQL 2008 R2

 

✅ 실행하면 현재 데이터베이스에 등록된 모든 테이블 목록이 출력됩니다.

 

2. 각 테이블의 구조(컬럼 정보) 확인
각 테이블의 컬럼 정보를 확인하려면 다음 SQL을 실행하세요.

(1) 특정 테이블의 컬럼 구조 확인

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '테이블명';

 

예를 들어 sales 테이블의 구조를 보려면:

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sales';

 

3. 테이블의 데이터 사용량 확인 (미사용 테이블 찾기)
테이블에 저장된 레코드 개수를 확인하면 사용하지 않는 테이블을 정리할 수 있습니다.

(1) 모든 테이블의 데이터 개수 확인

SELECT t.name AS TableName, i.rows AS RecordCount
FROM sys.tables t
JOIN sys.sysindexes i ON t.object_id = i.id
WHERE i.indid < 2
ORDER BY i.rows DESC;

 

✅ 출력 결과:

TableName RecordCount
orders 15000
customers 5000
logs 0

 

4. 사용하지 않는 테이블 정리
(1) 테이블 삭제
사용하지 않는 테이블이 확인되었다면 삭제할 수 있습니다.

DROP TABLE 테이블명;

예제:

DROP TABLE logs;

⚠️ 주의: 삭제 전에 반드시 백업하세요!

 

(2) 특정 테이블의 데이터만 정리 (테이블 유지)

DELETE FROM 테이블명;
DBCC CHECKIDENT ('테이블명', RESEED, 0); -- ID 컬럼 초기화

예제:

DELETE FROM logs;
DBCC CHECKIDENT ('logs', RESEED, 0);

 

5. 테이블 관계(외래키) 확인
테이블을 삭제하기 전에 외래키(FK) 관계를 확인해야 합니다.

 

SELECT 
    f.name AS ForeignKeyName,
    OBJECT_NAME(f.parent_object_id) AS TableName,
    COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
    OBJECT_NAME(f.referenced_object_id) AS ReferencedTableName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.object_id = fc.constraint_object_id
ORDER BY TableName;

 

✅ 출력 결과:

ForeignKeyName TableName ColumnName ReferencedTableName
FK_Order_Cust orders customer_id customers

 

👉 orders 테이블이 customers 테이블을 참조하고 있다면,
customers 테이블을 먼저 삭제하면 안 됩니다.

 

6. 테이블 백업 (중요!)
정리하기 전에 꼭 백업을 해두세요.

SELECT * INTO backup_sales FROM sales;

  • 결론
    INFORMATION_SCHEMA.TABLES를 사용해 현재 사용 중인 테이블 목록 확인
    INFORMATION_SCHEMA.COLUMNS로 각 테이블의 컬럼 구조 분석
    sys.tables과 sys.sysindexes를 사용해 데이터 개수 확인 (미사용 테이블 찾기)
    DROP TABLE로 필요 없는 테이블 정리 (백업 필수!)
    외래키(sys.foreign_keys)를 확인하여 연관된 데이터 삭제 순서 조정
    정리 전 백업 필수 (SELECT * INTO backup_table FROM table)