2012-10-25 107 views
1

我正在使用SQL Server 2012,並且遇到了一個奇怪的問題。數據庫沒有顯示在SSMS中

我試圖將數據庫快照還原到數據庫。通常它不需要很多時間來恢復,但現在花了5分鐘,並且仍在恢復,所以我停止了查詢執行。它試圖停止查詢執行超過5分鐘,所以我使用任務管理器關閉了SSMS。

然後我試圖用KILL殺死恢復進程。

enter image description here

現在我能夠可以連接到該服務器,但數據庫列表是不開放。我的意思是:無論誰連接到這臺服務器,他們都無法獲得數據庫。當我檢查sysprocesses表時,它顯示lastwaittypeLCK_M_S

我的用戶都不能看到數據庫。看起來我有點混亂。當其他人連接到服務器時,我無法重新啓動SQL Server。

我該如何解決這個問題?請幫忙。

編輯: 我想this approach,當我與

select db_name(dbid), * from sysprocesses where blocked <> 0 

檢查我有兩個記錄,

enter image description here

你覺得因爲這兩個休息的過程中都被鎖起來。

回答

1

我猜在主數據庫中的​​表上仍然有一些隱藏的鎖。這很可能是由恢復命令的KILL造成的。

這裏的文章可以幫助你:

http://ellisweb.net/2012/02/clearing-out-a-mysterious-table-lock-lck_m_s-in-sql-server-2008/

它基本上會建議您找出其中隱藏的鎖是從哪裏來的,然後發佈在該進程ID KILL

+0

你能檢查我的編輯嗎 – Harsha

+0

你確定嗎?因爲這種方法說「它是一種骯髒的方式,只有在你有信心的時候才能使用它」。..我沒那麼自信,因爲別人正在使用這臺服務器。 – Harsha

+0

每個'KILL'語句都是解決問題的骯髒方法。 – SchmitzIT

1

嘗試重新啓動實例。無論如何,如果用戶無法看到任何數據庫,也不會受到傷害。

+0

是的,用戶無法看到數據庫列表,但他們可以從新的查詢窗口或.net應用程序連接數據庫。 – Harsha