无法在sql server中删除并创建数据库

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)

  • 这个答案结合[this](http://stackoverflow.com/a/13672187/2545927)为我做了. (3认同)

ury*_*ury 49

  1. 右键单击数据库并选择"删除"(或左键单击它并按"del"键).
  2. 出现"删除对象"对话框时,请务必选中"关闭现有连接"(请参见下文,默认情况下未选中).
  3. "确定".

在此输入图像描述

  • 最简单的方式,谢谢!+1 (3认同)

Joe*_*eph 31

试试这个:

use master;
GO

ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

GO
.....
Run Code Online (Sandbox Code Playgroud)

这将回滚在该数据库上运行的任何事务,并以单用户模式运行SQL Server数据库.

  • @LolCoder:这将回滚在该数据库上运行的任何事务,并使 SQL Server 数据库处于单用户模式。 (2认同)
  • 这种方法要好得多.这里也讨论了这里(http://stackoverflow.com/questions/1711840/how-do-i-specify-close-existing-connections-in-sql-script). (2认同)

小智 7

ALTER DATABASE test1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE test1 SET OFFLINE;

DROP DATABASE test1
Run Code Online (Sandbox Code Playgroud)

在存储过程中尝试这个