控制服务器权限和LOGON触发器

时间:2013-12-16 22:19:08

标签: sql

我做了一个触发器,它将检查登录用户的IP地址是否与Allowed_IPs表中的IP匹配。如果匹配,则用户可以登录。如果没有匹配,则用户无法登录。

ALTER TRIGGER [Logon_Screen]
    ON ALL SERVER
    FOR LOGON
AS
BEGIN

DECLARE @IP VARCHAR(MAX)
DECLARE @Matching_IP INT

SELECT @IP = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]','nvarchar(128)')

SET @Matching_IP = (SELECT COUNT(*) FROM DAT.dbo.[Allowed_IPs] WHERE [Allowed_IP] = @IP)
        IF @Matching_IP = 0
            BEGIN
                ROLLBACK


    END

END

上面的代码工作正常,但有一个奇怪的问题。除非正在记录的用户是sysadmin的成员或具有Control Server权限,否则即使用户的IP地址在Allowed_IPs表中,触发器也会阻止登录。显然,我不能只给所有用户管理员权限,所以我还能做什么?

0 个答案:

没有答案