안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 4-5. 데이터베이스 삭제를 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번 강좌는 데이터베이스 삭제입니다. 관리 도구인 SSMS에서 삭제하는 방법과 SQL 쿼리를 이용해 삭제하는 방법이 있습니다.
TL;DR
데이터베이스 삭제를 SSMS와 SQL 쿼리로 수행합니다. 삭제 시, “사용 중” 오류가 발생하면, 해당 세션을 종료하고 삭제 작업을 수행합니다.
SSMS에서 데이터베이스 삭제
SSMS에서 이렇게 데이터베이스를 선택하고 삭제를 수행합니다.
이미지 - 데이터베이스 삭제 선택
이미지 - 데이터베이스 삭제 처리
이렇게 백업과 복원 “기록”도 삭제할 건지를 묻습니다. 체크하면 백업과 복원 기록도 사라집니다. (참고로, 백업과 복원 작업에 대한 기록은 msdb 시스템 데이터베이스에 저장됩니다.)
SQL 쿼리로 데이터베이스 삭제
다음 쿼리로 데이터베이스를 삭제할 수 있습니다.
DROP DATABASE database_name [ ,...n ] |
SQL 쿼리 예제로 살펴보겠습니다.
--TEST용 데이터베이스를 기본 설정으로 3개 만든다. CREATE DATABASE TEST1; GO CREATE DATABASE TEST2; GO CREATE DATABASE TEST3; GO --TEST용 데이터베이스 1을 삭제한다. DROP DATABASE TEST1; GO --TEST용 데이터베이스 2, 3을 동시에 삭제한다. DROP DATABASE TEST2, TEST3;
SQL 쿼리로 데이터베이스 삭제를 시도할 때 데이터베이스가 “사용 중”이라 삭제가 안된다는 오류(Cannot drop database because it is currently in use)가 발생할 수 있습니다.
아래 쿼리를 수행해 해당 데이터베이스를 사용하는 세션을 kill 하고 drop을 수행하면 됩니다. 이전 데이터베이스 생성 강좌를 참조하세요.
-- 데이터베이스 사용자를 자동 kill 하는 SQL 쿼리 -- 수행 전에 중요 작업 프로세스가 있는지 미리 체크하고 실행 USE master; GO DECLARE @kill varchar(max) = ''; SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; ' FROM master..sysprocesses WHERE spid > 50 AND dbid = DB_ID('Your_DB_Name'); -- 데이터베이스 이름으로 변경 EXEC(@kill); GO -- 실행하면 SINGLE_USER 설정. ALTER DATABASE Your_DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE; -- 이후 데이터베이스 삭제 수행. DROP DATABASE Your_DB_Name;
데이터베이스 삭제는 되돌릴 수 없는 중요한 작업입니다. 중요 데이터베이스라면, 데이터베이스 관련 백업을 모두 잘 진행했는지, 다시 체크하고 신중하게 데이터베이스를 삭제하세요.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.