如果我運行SQL Server Management Studio,並告訴它連接到(localdb)\ v11.0,它知道我曾經使用過的每個數據庫,儘管事實上大部分數據庫文件早已不復存在。如何刪除(localdb)數據庫,如果文件不存在
如果我要求它刪除這些數據庫之一,它抱怨,由於數據庫文件已經一去不復返了它不能刪除數據庫(duhhh)。那麼,我該如何清理這個混亂,並刪除所有數據庫引用的輔助數據庫文件都不見了?
鮑勃
如果我運行SQL Server Management Studio,並告訴它連接到(localdb)\ v11.0,它知道我曾經使用過的每個數據庫,儘管事實上大部分數據庫文件早已不復存在。如何刪除(localdb)數據庫,如果文件不存在
如果我要求它刪除這些數據庫之一,它抱怨,由於數據庫文件已經一去不復返了它不能刪除數據庫(duhhh)。那麼,我該如何清理這個混亂,並刪除所有數據庫引用的輔助數據庫文件都不見了?
鮑勃
在這種情況下,請分離數據庫而不是嘗試刪除它。在SQL Management Studio中,右鍵單擊數據庫,選擇「任務」,然後選擇「分離」。
它似乎有「固定本身」(或多或少)。當我今天早上在SQL Server Management Studio中查看(localdb)\ v11.0時,所有舊數據庫都沒有了。
儘可能靠近我可以告訴大家,它必須儘管它抱怨說,它不能這樣做刪除其對它們的引用。
也許某些SQL Server大師(或實踐經驗一點點至少某人)可以添加一些啓示?
我有同樣的問題。首先使用代碼設計數據庫時,我只需刪除舊的數據庫。它最終會出現在SQL Server Management Studio中的多個已刪除的數據庫。然後,當我嘗試查詢數據庫時,很難從已刪除的數據庫中找到正確的數據庫實例。
由於IRM的建議,我想分離這些已刪除的數據塊,併爲其中一些它的偉大工程!
不過我還剩幾個。然後,我嘗試在這些數據庫上「脫機」。每當我試圖使數據庫脫機時,SQL Server Management Studio都會崩潰。 SQL Server Management Studio重新啓動後,數據庫不見了。因此,如果分離和刪除不適合您,請嘗試「脫機」。
有趣的事實:3年後,Management Studio 2014在執行此操作時仍然崩潰! – Malachi
您只需重新創建實例,並使用SQL 2012進行測試! 剛進去的命令提示符下使用管理員權限,輸入:
//list the instancies
sqllocaldb i
//stop selected instance
sqllocaldb p "selected instance"
//delete
sqllocaldb d "selected instance"
//recreate or create new one
sqllocaldb c "new instance"
如果使用數據庫,則必須使用下一個命令停止它:sqllocaldb stop「selected instance」。 – RredCat
「stop」的簡稱只是「p」 –
我倒是收集了數百個的這些,和分離它們分別是太該死的繁瑣。
我做了什麼:
SELECT 'EXEC sp_detach_db ''' + name + ''''
FROM sys.databases
;
這給了我EXEC命令的列表:
EXEC sp_detach_db 'E:\...\ADATABASE.MDF'
EXEC sp_detach_db 'E:\...\ANOTHERDATABASE.MDF'
EXEC sp_detach_db 'E:\...\ATHIRDDATABASE.MDF'
....
EXEC sp_detach_db 'master'
EXEC sp_detach_db 'model'
EXEC sp_detach_db 'msdb'
EXEC sp_detach_db 'tempdb'
複製結果返回到命令窗口,選擇其他的一切比系統數據庫,並執行。
當您嘗試執行此操作時,SSMS 2012中的奇怪錯誤;如果您嘗試刪除數據庫並獲得最初提到的錯誤消息,則「分離」窗口將不再起作用。您需要斷開連接並重新連接到數據庫服務器以使其再次工作。 – CodingWithSpike
數據庫沒有顯示在我的分離列表中,但它仍然列在數據庫服務器(2016) – Damien