sql server 還原數據庫時提示數據庫正在使用,無法進行操作的解決方法_Mssql數據庫教程
推薦:MSSQL 2005/2008 日志壓縮清理方法小結本教程會詳細介紹下MSSQL 2005和MSSQL 2008刪除或壓縮數據庫日志的方法,感興趣的朋友可以參考下哈,希望可以幫助到你
這個問題的原因在于有用戶連接了當前要做還原的數據庫,這里的用戶甚至包括當前要做還原的用戶。解決辦法就是關閉與要還原數據庫的所有連接。
①先切換數據庫到master數據庫。執行語句
select * from master..sysprocesses where dbid=db_id( '數據庫名稱')
②然后逐步運行語句 exec kill spid(上一步結果集中的數據),
問題就解決了。哈哈
今天在還原數據庫的時候,提示"因為數據庫正在使用,所以無法獲得對數據庫的獨占訪問權",無論我是重啟數據庫,還是重啟計算機,都不能解決問題,多番嘗試后,終于解決了該問題。現將引發該問題的原因與解決方案寫出來,有不對的地方歡迎大家提出來。
引發原因:是因為我在還原數據庫的時候,還有其他的用戶正在使用數據庫,所以就會出現以上提示。
解決方法:
1,設置數據庫在單用戶模式下工作。
設置方法:在需要還原的數據庫上右擊,在右鍵菜單命令上選擇"屬性"- >"選項"- >"狀態"- >"限制訪問"- >"Single"。這是SQLSERVER2005的菜單命令,其它版本請自己查找。
2,利用SQL語句,殺死正在使用該數據庫的所有進程,自己以前在做一個SQL SERVER操作小工具的時候有寫過該功能的SQL,貼出來供大家參考:
declare @dbname varchar(50)
set @dbname='數據庫名稱'
declare @sql varchar(50)
declare cs_result cursor local for select 'kill '+cast(spid as varchar(50)) from sys.sysprocesses where db_name(dbid)=@dbname
open cs_result
fetch next from cs_result into @sql
while @@fetch_status=0
begin
execute(@sql)
fetch next from cs_result into @sql
end
close cs_result
deallocate cs_result
該SQL語句利用游標循環所有正在使用該數據庫的進程,并通過kill命令殺死進程。
3,利用SQL語句,斷開所有用戶鏈接,并回滾所有事務,具體SQL語句如下:
ALTER DATABASE [數據庫名稱]
SET OFFLINE WITH ROLLBACK IMMEDIATE
注意:在使用方法2與3時,不要在需要的還原的數據庫下執行,建議在master數據庫下面執行。
分享:真正高效的SQLSERVER分頁查詢(多種方案)Sqlserver數據庫分頁查詢一直是Sqlserver的短板,分頁查詢每頁30條,查詢第1500頁(即第45001-45030條數據)進行測試,分析出最高效的查詢,感興趣的朋友可以參考下哈
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-sql server 還原數據庫時提示數據庫正在使用,無法進行操作的解決方法。