SQL Server EVENTDATA() 在 MAC SQL Pro for SQL Server 中不起作用。我正在使用触发器来验证登录到 SQL Server 的用户的 IP 地址。这是我的触发器:
CREATE TRIGGER [trLogOnCheckIP]
ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON
AS
BEGIN
DECLARE @IPAddress NVARCHAR(50)
SET @IPAddress = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]',
'NVARCHAR(50)') ;
IF @IPAddress IS NULL OR NOT EXISTS (SELECT IP
FROM master..ValidIPAddress
WHERE IP = @IPAddress)
BEGIN
-- If login is not a valid one, then undo login process
ROLLBACK --Undo login process
INSERT INTO master..RejectedLogIn (IP) VALUES (@IPAddress)
END
END
我没有输入任何行,RejectedLogIn
用户无法登录,出现触发错误。执行时可能会失败EVENTDATA()
。如果我注释掉触发器的主体,它会起作用。