car*_*reo 57 sql-server sql-server-2008
我正在尝试和学习Microsoft SQL Server 2008 R2 SP1.我有一个数据库,我做了很多实验.现在我想放弃并重新创建它.所以我从数据库中提取创建脚本,我删除它,然后使用脚本重新创建它.令我惊讶的是,所有的桌子,钥匙等仍然存在.如何删除数据库,以便从头开始重建数据库?
Ana*_*dke 98
USE master
IF EXISTS(select * from sys.databases where name='yourDBname')
DROP DATABASE yourDBname
CREATE DATABASE yourDBname
Run Code Online (Sandbox Code Playgroud)
Pie*_*rre 30
给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
Run Code Online (Sandbox Code Playgroud)
小智 9
要求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)
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)
SQL Server 2016(及更高版本)支持一行和原子(?)语法 DROP DATABASE IF EXISTS database_name
参考:https://msdn.microsoft.com/en-us/library/ms178613.aspx
归档时间: |
|
查看次数: |
75753 次 |
最近记录: |