在Microsoft SQL Server中删除和重新创build数据库

我正在尝试使用Microsoft SQL Server 2008 R2 SP1进行学习。 我有一个数据库,我做了很多实验。 现在我想删除并重新创build它。 所以我从数据库中提取创build脚本,我删除它,然后使用脚本重新创build它。 令我惊讶的是,所有的桌子,钥匙等都还在那里。 如何删除数据库,以便我可以从头重build数据库?

USE master IF EXISTS(select * from sys.databases where name='yourDBname') DROP DATABASE yourDBname CREATE DATABASE yourDBname 

为他的部分代码+1 AnandPhadke

该代码将closures所有到数据库的活动连接,然后将其删除

 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 

要求多次inputDBName容易出错,在某些情况下,它会被执行时出现不一致的条目和意想不到的后果。

来自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(及以上)支持一行和primefaces(?)语法DROP DATABASE IF EXISTS database_name

REF: https : //msdn.microsoft.com/en-us/library/ms178613.aspx

我从数据库中提取创build脚本

这将提取数据库中的所有内容(表,键等)的创build脚本。 如果你只是想创build一个空的数据库,只需运行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