sp_readerrorlog 查看SQLSERVER日志就可以获取.
如密码错误,登录失败后,日志会纪录以下信息:
Error: 18456, Severity: 14, State: 8.
Login failed for user 'sa'. [CLIENT: XX.XX.XX.XX]  

解决方案 »

  1.   

    登录行为不属于DDL也不属于DML,所以你如果要监控,就建立一个JOB,定时去查询日志获取就好了.
      

  2.   

    登录行为不属于DDL所以不能使用DDL触发器但是Sql2005还提供了服务期级别的触发器,所以LZ可以用服务器级别触发器捕获登陆错误可以用 FOR LOGON 事件捕获比如:
    CREATE TRIGGER T_Server_Login
    ON ALL SERVER FOR LOGON
    AS
    --这里是写一个主机名
    SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)')    ROLLBACK TRANGO另外登陆错误不光会保存在SqlServer日志,还会保存在windows的事件探查器中,看起来很方便
      

  3.   

    Msg 1084, Level 15, State 1, Procedure tr_ProcedureEvents3, Line 3
    'LOGON' is an invalid event type.
      

  4.   

    不好意思,刚才没注意看,上面的代码写的有问题如果LZ要纪录登陆信息可以试试下面的代码--这里建一个表纪录
    create table tmp(a nvarchar(100),b nvarchar(100))CREATE TRIGGER T_Server_Login
    ON ALL SERVER FOR LOGON
    AS
    DECLARE @data XML
    SET @data = EVENTDATA()
    declare @ClientHost nvarchar(100)
    declare @EventType nvarchar(100)
    declare @TSQLCommand nvarchar(1000)
    --这里是纪录一个主机名和这个事件
    SET @ClientHost = @data.value('(/EVENT_INSTANCE/ClientHost)[1]', 'nvarchar(200)')
    SET @EventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)')
    insert tmp values(@ClientHost,@EventType)
    GO--删除触发器
    DROP TRIGGER T_Server_Login ON ALL SERVER
      

  5.   

    直接查看sqlserver日志就行了(不是事物日志哦)
    前提是审核事件要把成功和失败都选上
      

  6.   

    hb_gx,您好。
    您的环境是SQL Server 2005吗?为什么我的环境上还是不认ON ALL SERVER FOR LOGON中Logon这个事件。我的2005的标准版。
    多谢!
      

  7.   

    登录触发器是2005 sp2 才增加的, 所以楼主要检查版本
    不过, 无法在这个触发器中确认登录失败sql 会记录登录失败, 跟sql的配置有关, 只有打开配置才会在日志中记录登录失败(当然默认是打开的), 这个在sql实例属性的安全性--登录审核中配置如果你不想看日志, 则可以用事件探查器跟踪登录事件, 也可以创建事件通知(使用service broker消息传送机制)把登录失败事件直接存储到表中
      

  8.   

    一般来说, 看日志是最简单的, 只需要把登录审核打开即可(而默认是打开的)事件控查器不适合长期跟踪, 它无法自动(或者定时)启动, 除非你自己写程序(使用 smo)或者写脚本, 使用 sp_trace_create 这些存储过程
      

  9.   

    事件通知应该算最复杂的, 因为要对service broker有一定了解
    但这个用好了的话, 可以像触发器一样自动捕获登录失败, 并把它记录到指定的表(甚至可以记录到一台专门的监控服务器)
      

  10.   

    FOR   LOGON 触发器其实没什么实际意思,只是因为有这个功能所以练习一下的,看看日志其实都很详细的