IT/DB

[mssql] 전체 데이터/테이블/뷰/프로시저/함수/시퀀스 삭제하기

미녀개발자 2019. 3. 25. 15:47
반응형

로컬이나 개발계에서 테스트를 하거나 초기개발구축 단계라면 나처럼 모든 테이블을 삭제하거나, 모든 데이터를 날릴 일이 생길 수 있다. 그런사람들은 아래를 참고하자.

 

 

 

ex1) SELECT 'DROP TABLE ' + SCHEMA_NAME(schema_id)+'.'+name AS TableToDrop FROM sys.objects WHERE type='U'

 

전체 테이블을 drop 하고자 한다면 ex1 처럼 sql문을 실행시켜 나온 결과목록을 복사해서 실행시키면 된다.

의도에 따라 alter, delete 등으로 활용할 수 있을 것 같다.

 

 

그외 삭제 쿼리 추출용 sql문은 아래와 같다.

 

--Table

 

SELECT 'DROP TABLE ' + SCHEMA_NAME(schema_id)+'.'+name AS TableToDrop FROM sys.objects WHERE type='U'

 

 

 

--VIEW

 

SELECT 'DROP VIEW ' + SCHEMA_NAME(schema_id)+'.'+name AS ViewToDrop FROM sys.objects WHERE type='V'

 

 

 

--PROCEDURE

 

SELECT 'DROP PROCEDURE ' + SCHEMA_NAME(schema_id)+'.'+name AS procedureToDrop FROM sys.objects WHERE type='P'

 

 

 

--FUNCTION

 

SELECT 'DROP FUNCTION ' + SCHEMA_NAME(schema_id)+'.'+name AS functionToDrop FROM sys.objects WHERE type='FN'

 

================================================================================

// 190402 추가

 

--모든 시퀀스 조회

SELECT sch.name + '.' + seq.name AS [Sequence schema and name]   
    FROM sys.sequences AS seq  
    JOIN sys.schemas AS sch  
        ON seq.schema_id = sch.schema_id ;  

--모든 시퀀스 삭제

SELECT 'DROP SEQUENCE ' + sch.name + '.' + seq.name AS [Sequence schema and name]   
    FROM sys.sequences AS seq  
    JOIN sys.schemas AS sch  
        ON seq.schema_id = sch.schema_id ;  
반응형