서버 개발 도중 잦은 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";