|
本帖最后由 wu8313 于 2016-1-16 15:29 编辑
使用如下脚本在SQL后台建立 存储过程,然后在 ACCESS退出时,调用该存储过程。我测试了,可行,你试试看。
把脚本中 @dbname 变量 替换成你数据库的名称。
------------------------------------------------------------
USE [master]
GO
/****** Object: StoredProcedure [dbo].[P_killconnection] Script Date: 01/16/2016 13:28:17 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[P_killconnection]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[P_killconnection]
GO
USE [master]
GO
/****** Object: StoredProcedure [dbo].[P_killconnection] Script Date: 01/16/2016 13:28:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*--调用
use master
declare @y int,@z nvarchar(2000)
exec P_killconnection @y output,@z output
select @y as 删除与数据库的连接是否成功,@z as 删除连接返回的提示
*/
create procedure [dbo].[P_killconnection]
@is_killconnection int output , --根据该参数判断 删除连接是否成功
@is_killconnection_msg nvarchar(2000) output --用该参数 截获 删除连接返回的消息
AS
Set Nocount On
BEGIN
BEGIN TRY
BEGIN TRANSACTION
begin -->>方法一
--use master
declare @spid int ;
declare @ddlstring nvarchar(max);
declare @dbname varchar(200);
set @dbname='fly_xc';
declare tmpcur cursor
for select distinct spid as spid from sys.sysprocesses
where dbid=db_id(@dbname) ;
OPEN tmpcur;
fetch tmpcur into @spid ;
while (@@FETCH_STATUS=0)
begin
set @ddlstring=N'Kill '+CONVERT( nvarchar,@spid) ;
execute sp_executesql @ddlstring ;--这里要使用动态脚本,否则将会 提示:在事务中不能使用 kill 命令
fetch tmpcur into @spid ;
end ;
close tmpcur ;
deallocate tmpcur ;
end
IF @@error=0 --如果没有 系统级别 报错的话
begin
COMMIT TRANSACTION
set @is_killconnection=1 --删除连接 成功
set @is_killconnection_msg='删除与数据库 '+@dbname+' 的连接:成功'
end
ELSE --如果有 系统级别 报错的话
begin
ROLLBACK TRANSACTION
set @is_killconnection=-1 --删除连接 失败
set @is_killconnection_msg='删除与数据库 '+@dbname+' 的连接:失败'
end
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_MESSAGE() AS ErrorMessage;
set @is_killconnection=-1 --删除连接 失败
set @is_killconnection_msg='删除与数据库 '+@dbname+' 的连接:失败'
END CATCH;
END
GO
------------------------------------------------------------ |
|