Sql server SQL Server脚本错误:数据库已在使用中

Sql server SQL Server脚本错误:数据库已在使用中,sql-server,Sql Server,我有一个从visual studio运行的SQL Server部署脚本,它给出了以下错误: 错误SQL01268:.Net SqlClient数据提供程序:Msg 1828,级别16,状态5,第1行逻辑文件名“myDB”已在使用中。请选择其他名称 但是,当我进入SSMS并尝试删除此数据库时,会出现以下错误: 无法删除数据库“myDB”,因为它不存在或您没有权限 有人能帮我理解这个虚拟文件名已经存储在哪里,以便我删除它吗 谢谢。第二条错误消息指出,无法删除数据库,因为其他会话当前已连接到该数据库。

我有一个从visual studio运行的SQL Server部署脚本,它给出了以下错误:

错误SQL01268:.Net SqlClient数据提供程序:Msg 1828,级别16,状态5,第1行逻辑文件名“myDB”已在使用中。请选择其他名称

但是,当我进入SSMS并尝试删除此数据库时,会出现以下错误:

无法删除数据库“myDB”,因为它不存在或您没有权限

有人能帮我理解这个虚拟文件名已经存储在哪里,以便我删除它吗


谢谢。

第二条错误消息指出,无法删除数据库,因为其他会话当前已连接到该数据库。为了赶走所有用户,您可以将其添加到部署脚本中,或者在部署之前手动运行它。
USE
命令用于确保当您是所连接的人时,不存在竞争条件

USE [master];
GO
ALTER DATABASE myDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE myDB;
GO

第二条错误消息指出,无法删除数据库,因为其他会话当前已连接到该数据库。为了赶走所有用户,您可以将其添加到部署脚本中,或者在部署之前手动运行它。
USE
命令用于确保当您是所连接的人时,不存在竞争条件

USE [master];
GO
ALTER DATABASE myDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE myDB;
GO

尝试从脚本生成数据库时也可能发生此错误。根据本文,我试图将SQLServer2012数据库降级到2008。但是,当我最初运行脚本时,出现了这个错误

The logical file name "emmagarland" is already in use. Choose a different name.
在我的恢复脚本中(阅读本文之后),我没有检查和更改逻辑文件名。我必须确保路径正确,并更改日志文件生成的名称,否则它会尝试用日志覆盖.mdf文件,然后抛出此错误。我通过将名称从xxxxx更改为xxxxx LDF来修复它

 CREATE DATABASE [xxxxx] ON  PRIMARY 
 ( NAME = xxxxx', FILENAME = N'C:\Program Files\Microsoft SQL
 Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\xxxxx.mdf' , SIZE =
 14400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
 ( NAME = N'xxxxxldf', FILENAME = N'C:\Program Files\Microsoft SQL
 Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\xxxxx_log.ldf' ,
 SIZE = 18560KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 GO

听起来很简单,但当我创建一个全新的数据库时,我不明白为什么会发生这个错误

尝试从脚本生成数据库时也会发生此错误。根据本文,我试图将SQLServer2012数据库降级到2008。但是,当我最初运行脚本时,出现了这个错误

The logical file name "emmagarland" is already in use. Choose a different name.
在我的恢复脚本中(阅读本文之后),我没有检查和更改逻辑文件名。我必须确保路径正确,并更改日志文件生成的名称,否则它会尝试用日志覆盖.mdf文件,然后抛出此错误。我通过将名称从xxxxx更改为xxxxx LDF来修复它

 CREATE DATABASE [xxxxx] ON  PRIMARY 
 ( NAME = xxxxx', FILENAME = N'C:\Program Files\Microsoft SQL
 Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\xxxxx.mdf' , SIZE =
 14400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
 ( NAME = N'xxxxxldf', FILENAME = N'C:\Program Files\Microsoft SQL
 Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\xxxxx_log.ldf' ,
 SIZE = 18560KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 GO


听起来很简单,但当我创建一个全新的数据库时,我不明白为什么会发生这个错误

用户没有更改数据库“myDB”的权限,数据库不存在,或者数据库未处于允许访问检查的状态。
这是来自部署脚本还是在SSMS中手动运行?SQL Server是什么版本的(
SELECT@@version;
)?在SSMS中手动运行<代码>Microsoft SQL Server 2008(SP1)-10.0.2573.0(X64)2011年2月4日11:27:06版权所有(c)1988-2008 Windows NT 6.1上的Microsoft Corporation标准版(64位)(Build 7601:Service Pack 1)这产生了什么<代码>选择用户访问描述,为只读,状态为sys.databases中的描述,其中database\u id=DB\u id('myDB')?你确定你是以有足够权限更改/删除/创建数据库的用户身份运行吗?结果中没有任何行。另外,当我刷新数据库列表时,该数据库不再显示。我很确定我在这里有无限的权限。
用户没有更改数据库“myDB”的权限,数据库不存在,或者数据库未处于允许访问检查的状态。
这是来自部署脚本还是在SSMS中手动运行?SQL Server是什么版本的(
SELECT@@version;
)?在SSMS中手动运行<代码>Microsoft SQL Server 2008(SP1)-10.0.2573.0(X64)2011年2月4日11:27:06版权所有(c)1988-2008 Windows NT 6.1上的Microsoft Corporation标准版(64位)(Build 7601:Service Pack 1)这产生了什么<代码>选择用户访问描述,为只读,状态为sys.databases中的描述,其中database\u id=DB\u id('myDB')?你确定你是以有足够权限更改/删除/创建数据库的用户身份运行吗?结果中没有任何行。另外,当我刷新数据库列表时,该数据库不再显示。我很确定我在这里有无限的权限。关于此错误消息的一些讨论:@Marc B是的,这里有一些好的地方-我假设我的意图确实是要删除数据库,但可能不是。意图是从数据库项目重建它。如果它是另一个附加到
myDB
的用户,您可以使用MSSMS活动监视器查看该数据库上的连接/用户。@MarcB-I已停止,然后重新启动SQL Server。似乎这会解决另一个连接问题,不是吗?关于此错误消息的一些讨论:@Marc B是的,这里有一些好的观点-我假设其意图确实是要删除数据库,但可能不是。其意图是从数据库项目重建数据库。如果它是另一个附加到
myDB
,则,您可以使用MSSMS活动监视器查看该数据库上的连接/用户。@MarcB-I已停止,然后重新启动SQL Server。似乎这会解决另一个连接,不是吗?