반응형
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
코드의 일부에 대해 AnandPhadke에게 +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
DBName을 두 번 이상 입력하도록 요구하면 오류가 발생하기 쉬우 며, 어떤 시점에서는 일관성없는 항목과 의도하지 않은 결과로 실행됩니다.
다양한 지원을 제공하는 AnandPhadke 또는 Pierre의 답변이 선호 될 것입니다.
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
SQL Server 2016 (이상)은 한 줄과 atomic (?) 구문을 지원합니다. DROP DATABASE IF EXISTS database_name
참조 : https://msdn.microsoft.com/en-us/library/ms178613.aspx
데이터베이스에서 생성 스크립트를 추출합니다.
이렇게하면 데이터베이스의 모든 항목 (테이블, 키 등)에 대한 생성 스크립트가 추출됩니다. 단순히 빈 데이터베이스를 생성하려면 다음을 실행하십시오.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
반응형
'ProgramingTip' 카테고리의 다른 글
LaTeX의 반복 (0) | 2020.12.14 |
---|---|
십진수 속성을 통화로 포맷하는 방법 (0) | 2020.12.14 |
키 값을 사용하고 해당 값이없는 Python에서 사전 초기화 (0) | 2020.12.14 |
Objective-C에서 Swift String 열거 형을 사용하는 방법은 무엇입니까? (0) | 2020.12.14 |
장고 : 사용 (0) | 2020.12.14 |