SQL Server EVENTDATA() 无法从 MAC SQL Pro for SQL Server 工作

SQL Server EVENTDATA() not working from MAC SQL Pro for SQL Server

SQL Server EVENTDATA() 无法从 MAC SQL Pro for SQL Server 运行。我正在使用触发器来验证登录到 SQL 服务器的用户的 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() 时可能会失败。如果我注释掉触发器的主体,它就会起作用。

我通过设置以下变量解决了这个问题:

SET 
          ANSI_NULLS, 
          QUOTED_IDENTIFIER, 
          CONCAT_NULL_YIELDS_NULL, 
          ANSI_WARNINGS, 
          ANSI_PADDING 
        ON;

我在查看服务器日志后才意识到这一点:

SELECT failed because the following SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.