Tre*_*Tzu 51 sql t-sql sql-server-2008
我正在使用SQL Server 2008,我似乎无法删除并创建数据库.
我尝试了几种不同的方法,但我总是在它似乎被创建之前没有丢弃或试图"使用".
我目前的尝试看起来像这样.
use master;
GO
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test')
BEGIN
DROP DATABASE [test];
END
GO
CREATE DATABASE [test];
GO
use [test];
GO
Run Code Online (Sandbox Code Playgroud)
将GO被建议在MS论坛,以此来阻止选择数据库时出现的一些问题.
有了这个,我目前得到的输出(与现有的同名数据库):
消息3702,级别16,状态4,行3
无法删除数据库"test",因为它当前正在使用中.
消息1801,级别16,状态3,行1
数据库'测试'已存在.选择其他数据库名称.
消息2714,级别16,状态6,行2
数据库中已存在名为"staff_type"的对象.
对我数据库中的每个表重复最后2行.
mr_*_*air 72
我们通常会收到此错误如果您已打开任何与此数据库连接的查询窗口,请确保关闭所有已打开的查询窗口,这些窗口连接到您要删除的数据库.
不要使用您尝试删除的数据库.使用master删除任何用户数据库,这是一个很好的做法.
确保没有其他进程附加到您尝试删除的数据库.
EXEC sp_who2
--Run kill spid for each process that is using the database to be dropped.
kill <<processid>> -- Kill 57
Run Code Online (Sandbox Code Playgroud)
使用EXEC sp_who2并检查DBName列,您的数据库名称不应出现在列表中,如果出现kill使用该进程kill <<processid>>然后尝试删除.
试试这个代码.
use master
GO
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test')
DROP DATABASE [test]
GO
CREATE DATABASE [test]
GO
use [test]
GO
Run Code Online (Sandbox Code Playgroud)
ury*_*ury 49

Joe*_*eph 31
试试这个:
use master;
GO
ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
.....
Run Code Online (Sandbox Code Playgroud)
这将回滚在该数据库上运行的任何事务,并以单用户模式运行SQL Server数据库.
小智 7
ALTER DATABASE test1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE test1 SET OFFLINE;
DROP DATABASE test1
Run Code Online (Sandbox Code Playgroud)
在存储过程中尝试这个