我在 SQL Server 2019 实例中创建了登录触发器。
我们的想法是两者兼得:
触发器示例是:
CREATE OR ALTER TRIGGER [trigger_name]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
BEGIN TRAN
INSERT INTO LOG_TABLE ...
COMMIT TRAN
IF ORIGINAl_LOGIN() = 'TEST2'
BEGIN
ROLLBACK;
END;
END
我测试与用户 TEST1 和 TEST2 的连接。
测试:
问题:没有为
TEST2
写入日志
回滚触发器的事务后即可写入日志。 EG
CREATE OR ALTER TRIGGER [only_sa_allowed]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
IF ORIGINAl_LOGIN() <> 'sa'
BEGIN
ROLLBACK;
END;
INSERT INTO LOG_TABLE(user_name) values (ORIGINAL_LOGIN());
END