2011-09-23 117 views
0

我從Visual Studio運行SQL Server部署腳本給我的錯誤:SQL服務器腳本錯誤:數據庫已在使用

Error SQL01268: .Net SqlClient Data Provider: Msg 1828, Level 16, State 5, Line 1 The logical file name "myDB" is already in use. Choose a different name.

然而,當我進入SSMS和嘗試,並放棄這一數據庫,我得到的錯誤:

Cannot drop the database 'myDB', because it does not exist or you do not have permission.

任何人都可以幫助我瞭解這個幻影文件名已存儲,以便我可以刪除它嗎?

謝謝。

+0

關於此錯誤消息的一些討論:http://social.msdn.microsoft.com/Forums/en-GB/vstsdb/thread/0826dd27-cec9-41ca-8f5f-779f4aadf916 –

+0

@Marc B yes有一些很好的指向那裏 - 我認爲這個意圖確實是放棄了數據庫,但它可能不是。 –

+0

意圖是從數據庫項目重建它。 –

回答

3

第二個錯誤消息指出數據庫不能被刪除,因爲其他會話當前連接到它。爲了將所有用戶踢出去,您可以將其添加到您的部署腳本中,或者在部署前手動運行它。 USE命令是要確保當你是連接的人時沒有競爭狀態。

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

'用戶沒有更改數據庫'myDB'的權限,數據庫不存在,或者數據庫未處於允許訪問檢查的狀態。' –

+0

是從部署腳本還是在SSMS中手動運行?什麼版本是SQL Server('SELECT @@ VERSION;')? –

+0

在SSMS中手動運行。 Microsoft SQL Server 2008(SP1) - 10.0.2573.0(X64)Feb 4 2011 11:27:06 Copyright(c)1988-2008 Windows NT 6.1上的Microsoft Corporation標準版(64位)(內部版本7601:Service Pack 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 

聽起來簡單,但我不明白爲什麼這個錯誤是存在的,當我創建一個全新的數據庫!