如何同时断开多个客户端与系统建立的多个会话。

orablue 2003-10-10 12:01:58
A,B两个用户都属于KKK这个角色。
现在在前台我先用A连接后台数据库,然后在前台注销在用B连接到后台数据库,这里连接的是同一个数据库。让后我在用一个具有SYSADMIN权限的用户在前台连接后台数据库。这个时候,我执行SP_DROPUSER,SP_DROPLOGIN,SP_DROPROLE来删除这个角色里面(先删除该角色的用户,在删除角色)。但是这个时候提示A,B与后台有连接。也就是说我注销的时候,A,B都没有与后台数据库断开,所以我想在用户注销的让它与后台连接login彻底断开,应该怎么做?
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarge 2003-10-10
  • 打赏
  • 举报
回复
alter database dbname set SINGLE_USER with ROLLBACK IMMEDIATE
pengdali 2003-10-10
  • 打赏
  • 举报
回复
use master
go
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
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
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end

--用法
use master
exec killspid '数据库名'
orablue 2003-10-10
  • 打赏
  • 举报
回复
if MessageDlg('如果你删除了这个部门,这个部门的人员也会一起删除,您确定吗?'+#10#13+'确认删除;'+#10#13+'否则忽略!',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
deptname :=listview1.Selected.subitems[0];
with ut_data.wygl_data do
begin
try
try
query_user.Close ;
query_user.SQL.Clear ;
query_user.SQL.add('select username from usertb where dept='+#39+deptname+#39+' order by id');
query_user.Open ;
query_user.First ;
while not query_user.Eof do
begin
username :=query_user.fieldbyname('username').AsString ;
query_menu.Close ;
query_menu.SQL.Clear ;
query_menu.sql.add('exec sp_dropuser '+#39+username+#39);
query_menu.ExecSQL ;
query_menu.Close ;
query_menu.SQL.Clear ;
query_menu.SQL.Add('exec sp_droplogin '+#39+username+#39);
query_menu.ExecSQL ;
query_user.Next ;
end;
query_user.Close ;
query_user.sql.Clear ;
query_user.sql.add(' exec sp_droprole '+#39+deptname+#39) ;
query_user.ExecSQL ;
query_user.Close ;
query_user.SQL.Clear ;
query_user.SQL.Add(' delete from dept where dept='+#39+deptname+#39) ;
query_user.ExecSQL ;
query_user.Close ;
query_user.SQL.Clear ;
query_user.SQL.add(' delete from usertb where dept='+#39+deptname+#39) ;
query_user.ExecSQL ;
except
on e:exception do
begin
showmessage('发生错误:'+e.Message );
exit;
end;
end;
finally
showmessage('数据提交成功!');
ut_xtgl.qxgl.FormCreate(self);
end;
end;
end;
-----------------------------
这个过程中间是否可以加入事务控制?
orablue 2003-10-10
  • 打赏
  • 举报
回复
但是,由于A,B两个用户是我在前台通过sp_addlogin , sp_adduser程序建立的
,他们的权限均都是在当前数据库,当我要删除这个角色的时候,由于这个角色里面的A,B两个用户都logined,所以要killspid,但是这个时候,如果killspid以后,那么前台系统不就和后台数据库断开了连接了吗?这个时候,我怎么可以在删除这个角色呢?如果紧接着要马上在删除下一个角色那怎么办?是不是马上在建立连接呢?
根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:(1)全网公开,无用户授权机制的区块链,称为公有链;(2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;(3)所有网络中的节点都掌握在一家机构手中,称为私有链。联盟链和私有链也统称为许可链,公有链称为非许可链。 公有区块链系统 公有链中,任何节点无须任何许可便可随时加入或脱离网络。从最早的比特币系统人手介绍公有链系统的发展现状。点对点电子现金系统:比特币与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。本课程从零到一带领你实践一个小型公链。  

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧