不用讨论我为什么要这样做,是否有可能(我将使用登录触发器)注销对特定数据库没有写权限的用户?
我能够找到当前登录的用户权限,我只需要知道是否可以注销他们?
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'
答案 0 :(得分:1)
可以通过在login trigger内部执行ROLLBACK
来阻止用户登录。正如@DavidBrowneMicrosoft在其评论中提到的那样,使用PRINT
或RAISERROR
语句也是一种好习惯,这样可以记录登录失败的原因。此消息不会返回给客户端,但可能对故障排除很有用。
IF @HasPermission = 0
BEGIN
PRINT 'User does not have permissions to login';
ROLLBACK;
END;