MSSQL DB 초기화 쿼리

정선호·2025년 5월 15일
0

Server

목록 보기
4/6

서버 개발 도중 잦은 DB 초기화를 한 번에 편하게 하기 위해 작성한 쿼리

  • DB 내 모든 데이터를 삭제한다.
  • DB의 Identity를 0으로 Reseed한다
  • 이 때 EF Core의 Migration History를 기록하는 DB는 제외한다
-- 외래키 제약조건 임시로 OFF
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL";

-- __EFMigrationsHistory 테이블을 제외하고 모든 테이블에서 DELETE 수행
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += 'DELETE FROM [' + SCHEMA_NAME(schema_id) + '].[' + name + '];' + CHAR(13)
FROM sys.tables
WHERE name <> '__EFMigrationsHistory';

EXEC sp_executesql @sql;

-- 모든 테이블의 IDENTITY를 0으로 RESEED (__EFMigrationsHistory는 제외)
DECLARE @reseedSql NVARCHAR(MAX) = N'';
SELECT @reseedSql += 
    'IF EXISTS (SELECT 1 FROM sys.identity_columns WHERE object_id = OBJECT_ID(''' + SCHEMA_NAME(schema_id) + '.' + name + ''')) ' +
    'DBCC CHECKIDENT (''' + SCHEMA_NAME(schema_id) + '.' + name + ''', RESEED, 0);' + CHAR(13)
FROM sys.tables
WHERE name <> '__EFMigrationsHistory';

EXEC sp_executesql @reseedSql;

-- 외래키 제약조건 다시 ON
EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL";
profile
학습한 내용을 빠르게 다시 찾기 위한 저장소

0개의 댓글