Microsoft SQL Server에서 데이터베이스 삭제 및 재생성
Microsoft SQL Server 2008 R2 SP1을 사용하여 실험하고 학습하고 있습니다.저는 많은 실험을 한 데이터베이스를 가지고 있습니다.이제 삭제하고 다시 생성하려고 합니다.그래서 데이터베이스에서 작성 스크립트를 추출하고, 삭제하고, 스크립트를 사용하여 다시 작성합니다.놀랍게도, 모든 테이블, 열쇠 등이 아직 거기에 있습니다.데이터베이스를 삭제하여 데이터베이스를 처음부터 다시 작성하려면 어떻게 해야 합니까?
USE master
IF EXISTS(select * from sys.databases where name='yourDBname')
DROP DATABASE yourDBname
CREATE DATABASE yourDBname
코드의 그의 부분에 대해 아난드 파드케에게 +1.
이 코드는 데이터베이스에 대한 모든 활성 연결을 닫은 다음 삭제합니다.
WHILE EXISTS(select NULL from sys.databases where name='YourDBName')
BEGIN
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(N'YourDBName') AND SPId <> @@SPId
EXEC(@SQL)
DROP DATABASE [YourDBName]
END
GO
CREATE DATABASE YourDBName
GO
SQL Server 2016 이상에서는 한 줄 및 아토믹(?) 구문을 지원합니다.DROP DATABASE IF EXISTS database_name
참조: https://msdn.microsoft.com/en-us/library/ms178613.aspx
DBName을 두 번 이상 입력해야 하는 경우 오류가 발생하기 쉬우며, 일관되지 않은 항목과 의도하지 않은 결과로 실행될 수 있습니다.
다양한 지원을 받는 아난드 파드케 또는 피에르의 답변이 저에게는 더 선호될 것입니다.
DECLARE @DBName varchar(50) = 'YourDatabaseName'
USE master
IF EXISTS(select * from sys.databases where name= @DBName)
EXEC('DROP DATABASE ' + @DBName)
EXEC('CREATE DATABASE ' + @DBName)
또는
DECLARE @DBName varchar(50) = 'YourDatabaseName'
WHILE EXISTS(select NULL from sys.databases where name = @DBName )
BEGIN
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DBName) AND SPId <> @@SPId
EXEC(@SQL)
EXEC('DROP DATABASE ' + @DBName)
END
GO
데이터베이스에서 생성 스크립트를 추출
그러면 데이터베이스의 모든 항목(테이블, 키 등)에 대한 작성 스크립트가 추출됩니다.단순히 빈 데이터베이스를 작성하려는 경우,CREATE DATABASE <dbname>
이 방법이 가장 적합합니다.
if exists (select name from sys.databases where name='YourDBName')
alter database YourDBName set single_user with rollback immediate
go
if exists (select name from sys.databases where name='YourDBName')
drop database YourDBName
언급URL : https://stackoverflow.com/questions/12364250/dropping-and-recreating-databases-in-microsoft-sql-server
'programing' 카테고리의 다른 글
SQL Server의 모든 데이터베이스에 있는 모든 테이블을 단일 결과 집합으로 나열하려면 어떻게 해야 합니까? (0) | 2023.06.22 |
---|---|
SQL 서버에서 외부 키 제약 조건을 제거하는 방법은 무엇입니까? (0) | 2023.06.22 |
1L와 1L의 차이점은 무엇입니까? (0) | 2023.06.22 |
MongoSocketReadException: 스트림 끝에 너무 일찍 도달했습니다(일정 기간 동안 사용하지 않은 후). (0) | 2023.06.22 |
FK 제약 조건(Oracle) 추가 시 권한 부족 (0) | 2023.06.22 |