我的服务器上有一个以下 DDL 触发器
CREATE TRIGGER [DDLForLogin] ON ALL SERVER
FOR LOGON
AS BEGIN
DECLARE @data XML
SET @data = EVENTDATA()
IF EXISTS(SELECT * FROM sys.Databases WHERE NAME = 'DatabaseMaintenance') Begin
INSERT INTO DatabaseMaintenance.dbo.MyTable (UserName, HostName, ApplicationName, EventDataValue)
VALUES (CURRENT_USER, HOST_Name(), APP_NAME(),@Data)
END
END;
登录为Windows Authentication
在 MyTable 上插入一行,但登录SQL Server Authentication
如下错误:
Logon failed for login 'xxx' due to trigger execution.
Changed database context to 'master'.
Changed language setting to us_english. (Microsofr SQL Server, Error: 17892)
编辑
我GRANT INSERT
在我的桌子上PUBLIC
。
但引发的错误没有变化。
编辑2
我更改触发器并添加With Execute AS 'sa'
触发器
但引发的错误没有变化。