SQL Server注销/终止查询中已登录用户的会话

时间:2018-08-16 12:22:52

标签: sql-server

不用讨论我为什么要这样做,是否有可能(我将使用登录触发器)注销对特定数据库没有写权限的用户?

我能够找到当前登录的用户权限,我只需要知道是否可以注销他们?

DECLARE @HasPermission bit

SELECT @HasPermission =  HAS_PERMS_BY_NAME('RTEST2.dbo.TestTableSize', 'OBJECT', 'INSERT');

IF @HasPermission = 0
   SELECT 'Now this is where id want to log out the user'

1 个答案:

答案 0 :(得分:1)

可以通过在login trigger内部执行ROLLBACK来阻止用户登录。正如@DavidBrowneMicrosoft在其评论中提到的那样,使用PRINTRAISERROR语句也是一种好习惯,这样可以记录登录失败的原因。此消息不会返回给客户端,但可能对故障排除很有用。

IF @HasPermission = 0
BEGIN
    PRINT 'User does not have permissions to login';
    ROLLBACK;
END;