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]??