SQL未能排它地鎖定資料庫以執行該操作解決

2021-09-08 07:19:33 字數 1343 閱讀 5744

sql未能排它地鎖定資料庫以執行該操作解決:

--原因其他使用者或程序在用著資料庫

/*  

關閉使用者開啟的程序處理  

*/  

use   master  

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[p_killspid]')   and   objectproperty(id,   n'isprocedure')   =   1)  

drop   procedure   [dbo].[p_killspid]    

create   proc   p_killspid  

@dbname   varchar(200) --要關閉程序的資料庫名  

as      

declare   @sql     nvarchar(500)      

declare   @spid   nvarchar(20)  

declare   #tb   cursor   for  

select   spid=cast(spid   as   varchar(20))   from   master..sysprocesses   where   dbid=db_id(@dbname)  

open   #tb  

fetch   next   from   #tb   into   @spid  

while   @@fetch_status=0  

begin      

exec('kill   '+@spid)  

fetch   next   from   #tb   into   @spid  

end      

close   #tb  

deallocate   #tb  

--關閉對資料庫newhis   的連線  

exec   p_killspid     'hjdb'  

--更改排序規則  

alter   database   hjdb   collate   chinese_prc_bin    

--結束後刪除儲存過程  

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[p_killspid]')   and   objectproperty(id,   n'isprocedure')   =   1)  

drop   procedure   [dbo].[p_killspid]  

MySQL鎖定資料庫表

mysql中所有鎖定不會是死鎖的。這通過總是在乙個查詢前立即請求所有必要的鎖定並且總是以同樣的順序鎖定表來管理。對write,mysql使用的鎖定方法原理如下 對read,mysql使用的鎖定方法原理如下 當乙個鎖定被釋放時,鎖定可被寫鎖定佇列中的執行緒得到,然後是讀鎖定佇列中的執行緒。這意味著,如...

sqlserver 資料庫排它鎖 MySQL 鎖

鎖的由來 我們需要最大程度地利用資料庫的併發訪問,還需要確保每個使用者以一致性的方式讀取和修改資料,為解決此問題,有了鎖的機制 innodb 儲存引擎相對比mysql 資料庫的其他儲存引擎在這方面要技高一籌 mysql 常用引擎 innodb myisam memory 鎖機制用於管理對共享資源的併...

鎖定資料庫的乙個表 概述

鎖定資料庫的乙個表 select from table with holdlock 其他事務可以讀取表,但不能更新刪除 select from table with tablockx 其他事務不能讀取表,更新和刪除 select 語句中 加鎖選項 的功能說明 sql server提供了強大而完備的鎖...