设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1747|回复: 4
打印 上一主题 下一主题

[其它] 我用ACCESS开发的前台,SQL的后台,前台关掉后SQL进程中还连接中,请问如何关掉前...

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2016-1-15 16:10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用ACCESS开发的前台,SQL的后台,前台关掉后SQL进程中还连接中,请问如何关掉前台的ACCESS后,后台SQL进程自动结束?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2016-1-15 16:13:10 | 只看该作者
一般在语句执行先完加上rs.close应该就断开了与后台的连接吧
3#
发表于 2016-1-15 16:52:49 | 只看该作者
cn.close用过了吗?
4#
发表于 2016-1-16 15:08:17 | 只看该作者
本帖最后由 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




------------------------------------------------------------

点击这里给我发消息

5#
 楼主| 发表于 2016-1-16 16:13:24 | 只看该作者
wu8313 发表于 2016-1-16 15:08
使用如下脚本在SQL后台建立 存储过程,然后在 ACCESS退出时,调用该存储过程。我测试了,可行,你试试看。
...

谢谢,我先试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 23:55 , Processed in 0.094531 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表