在项目中,如何使用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;



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。