我有一个从visual studio运行的SQL Server部署脚本,它给了我错误:
错误SQL01268:.Net SqlClient数据提供程序:消息1828,级别16,状态5,行1逻辑文件名“myDB”已在使用中。选择其他名称。
但是,当我进入SSMS并尝试删除此数据库时,我收到错误:
无法删除数据库'myDB',因为它不存在或您没有权限。
任何人都可以帮我理解这个幻像文件名的存储位置,以便我可以将其删除吗?
感谢。
答案 0 :(得分:3)
第二条错误消息指出无法删除数据库,因为其他会话当前已连接到该数据库。为了激活所有用户,您可以将其添加到部署脚本中,也可以在部署之前手动运行。 USE
命令用于确保当您是连接者时没有竞争条件。
USE [master];
GO
ALTER DATABASE myDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE myDB;
GO
答案 1 :(得分:0)
尝试从脚本生成数据库时也会发生此错误。我试图按照本文https://superuser.com/questions/468578/move-database-from-sql-server-2012-to-2008将SQL Server 2012数据库降级到2008。但是,当我最初运行脚本时,我收到了此错误
The logical file name "emmagarland" is already in use. Choose a different name.
在我的恢复脚本中看到(在阅读本文https://ask.sqlservercentral.com/questions/106577/the-logical-file-name-database-is-already-in-use.html之后),我没有检查并更改了逻辑文件名。我必须确保路径正确,并更改生成的日志文件名称,否则它会尝试用日志覆盖.mdf文件,然后抛出此错误。我通过将名称从xxxxx更改为xxxxxldf
来修复它 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
听起来很简单,但我无法理解为什么在创建全新数据库时出现此错误!