在项目中,如何使用SQL Server数据库的登录触发器?

在某项目中,我们只允许一个人同时对数据库进行操作管理,但是这个人恰恰被人盗用了账号密码。
我们这时要设计登录触发器来进行限制。
举例:
如果登录名login_test已经创建了一个用户会话,登录触发器将拒绝由该登录名启动的SQL Server登录尝试。


USE master       --只有在master 数据库才可以对登录名赋权
GO
CREATE LOGIN login_test WITH PASSWORD='123456';      --创建一个用户
GO
GRANT VIEW SERVER STATE TO login_test;               --赋权
GO
ALTER TRIGGER connection_limit_trigger               --创建触发器
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS 
BEGIN 
--如果当前登录名等于login_test 同时连接数超出。
IF ORIGINAL_LOGIN()='login_test' AND 
   (SELECT COUNT(*) FROM sys.dm_exec_sessions
           WHERE is_user_process=1 AND
            original_login_name='login_test)>3
    ROLLBACK;

END;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值