45IT.COM- 電腦學習從此開始!
DIY硬件教程攢機經驗裝機配置
設計Photoshop網頁設計特效
系統注冊表DOS系統命令其它
存儲主板顯卡外設鍵鼠內存
維修顯卡CPU內存打印機
WinXPVistaWin7unix/linux
CPU光驅電源/散熱顯示器其它
修技主板硬盤鍵鼠顯示器光驅
辦公ExcelWordPowerPointWPS
編程數據庫CSS腳本PHP
網絡局域網QQ服務器
軟件網絡系統圖像安全
頁面導航: 首頁 > 設計學院 > 網絡編程 > 數據庫 >

因為數據庫正在使用,所以無法獲得對數據庫的獨占訪問權

電腦軟硬件應用網 45IT.COM 時間:2016-08-19 10:07 作者:45itcom

還原數據庫出錯: ” 因為數據庫正在使用,所以無法獲得對數據庫的獨占訪問權 “ 的解決方案

在還原數據庫時 , 有時會提示因為數據庫正在使用,所以無法獲得對數據庫的獨占訪問權 !!
這時需要在還原數據庫前先殺死正在使用數據庫的線程 .

該解決方案用到了系統表中的 sysprocesses ,若要訪問 sysprocesses ,您必須定位到 master 數據庫。

以下是殺死正在使用 'V091222' 數據庫的線程 :

use master

declare @dbname varchar ( 20)

set @dbname = 'v091222'


declare @sql nvarchar ( 500)

declare @spid int --SPID 值是當用戶進行連接時指派給該連接的一個唯一的整數

set @sql = 'declare getspid cursor for

select spid from sysprocesses where dbid=db_id(''' + @dbname + ''')'

exec ( @sql )

open getspid

fetch next from getspid into @spid

while @@fetch_status <>- 1-- 如果 FETCH 語句沒有執行失敗或此行不在結果集中。

begin

exec ( 'kill ' + @spid ) -- 終止正常連接

fetch next from getspid into @spid

end

close getspid

deallocate getspid

 

數據庫sysprocesses 表詳細說明


sysprocesses
sysprocesses 表中保存關于運行在 Microsoft&reg; SQL Server™ 上的進程的信息。這些進程可以是客戶端進程或系統進程。sysprocesses 只存儲在 master 數據庫中。

列名 數據類型 描述
spid smallint SQL Server 進程 ID 。
kpid smallint Microsoft Windows NT 4.0&reg; 線程 ID 。
blocked smallint 分塊進程的進程 ID (spid) 。
waittype binary(2) 保留。
waittime int 當前等待時間(以毫秒為單位)。當進程不處于等待時,為 0 。
lastwaittype nchar(32) 表示上次或當前等待類型名稱的字符串。
waitresource nchar(32) 鎖資源的文本化表示法。
dbid smallint 當前正由進程使用的數據庫 ID 。
uid smallint 執行命令的用戶 ID 。
cpu int 進程的累計 CPU 時間。無論 SET STATISTICS TIME ON 選項是 ON 還是 OFF ,都為所有進程更新該條目。
physical_io int 進程的累計磁盤讀取和寫入。
memusage int 當前分配給該進程的過程高速緩存中的頁數。一個負數,表示進程正在釋放由另一個進程分配的內存。
login_time datetime 客戶端進程登錄到服務器的時間。對于系統進程,是存儲 SQL Server 啟動發生的時間。
last_batch datetime 客戶端進程上次執行遠程存儲過程調用或 EXECUTE 語句的時間。對于系統進程,是存儲 SQL Server 啟動發生的時間。
ecid smallint 用于唯一標識代表單個進程進行操作的子線程的執行上下文 ID 。
open_tran smallint 進程的打開事務數。
status nchar(30) 進程 ID 狀態(如運行、休眠等)。
sid binary(85) 用戶的全局唯一標識符 (GUID) 。
hostname nchar(128) 工作站的名稱。
program_name nchar(128) 應用程序的名稱。
hostprocess nchar(8) 工作站進程 ID 號。
cmd nchar(16) 當前正在執行的命令。
nt_domain nchar(128) 客戶端的 Windows NT 4.0 域(如果使用 Windows 身份驗證)或信任連接的 Windows NT 4.0 域。
nt_username nchar(128) 進程的 Windows NT 4.0 用戶名(如果使用 Windows 身份驗證)或信任連接的 Windows NT 4.0 用戶名。
net_address nchar(12) 指派給每個用戶工作站上的網絡接口卡唯一標識符。當用戶登錄時,該標識符插入 net_address 列。
net_library nchar(12) 用于存儲客戶端網絡庫的列。每個客戶端進程都在網絡連接上進入。網絡連接有一個與這些進程關聯的網絡庫,該網絡庫使得這些進程可以建立連接。有關更多信息,請參見客戶端和服務器 Net-Library 。
loginame nchar(128) 登錄名。

頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
推薦知識
法甲球队有哪些