【问题标题】:SQL Server : find last time user was connectedSQL Server:查找用户上次连接的时间
【发布时间】:2021-12-11 05:14:09
【问题描述】:

我有一个 SQL Server (2000),其中有许多我认为不再使用的帐户。 有什么方法可以查出每个帐户最后一次使用的时间?

另外,创建一段时间内登录到服务器的帐户表的最简单方法是什么。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    SQL Server 可以审核登录。阅读更多详情 here for SQL 2008here for SQL 2000

    我认为除非启用审核,否则您无法跟踪登录使用情况。

    【讨论】:

    • 如果您打开 C2 审计,您的硬盘会在繁忙的服务器上快速填满跟踪文件。您从 syslogins 中从哪里获得有关 accdate 的信息?
    • 好信息,我创建了一个每分钟运行一次的作业,将这些信息合并到一个表中,这样我就可以随时查看该表并查看最后一次登录。非常适合我的目的。
    • 我刚刚测试了accdate是否更新为最新的登录时间,它没有。
    【解决方案2】:

    如果用户列在文件夹“安全”-->“登录”下,则此查询将为您提供用户上次登录的日期/时间。

    select name, accdate from sys.syslogins order by 1
    

    注意:这仅适用于 SQL 数据库中当前存在的那些 ID。如果 ID 被删除,它将不会出现在列表中。

    我不确定这是否适用于 SQL 2000,但我也将它用于更高版本的 SQL 以获取最后的登录名和日期:

    SELECT DISTINCT 
    Rtrim(sp.loginame) as loginname,
    sp.login_time
    FROM   master..sysprocesses sp
    WHERE  sp.login_time IN (SELECT Max(login_time)
                             FROM   master..sysprocesses
                             GROUP  BY loginame)
           AND sp.loginame NOT LIKE ( '##%' )
    

    我使用它来获取有关用户上次登录日期的更多信息:

    SELECT Max(sp.login_time) AS LastLoginTime, 
           Max(sp.last_batch) AS LastBatchTime, 
           sp.hostname, 
           sp.program_name, 
           sp.loginame, 
           sd.NAME            AS DatabaseName 
    FROM   sys.sysprocesses sp 
           JOIN sys.databases sd 
             ON sp.dbid = sd.database_id 
    WHERE  ( sp.loginame NOT LIKE 'NT SERVICE%' 
             AND sp.loginame NOT LIKE 'NT AUTHORITY%' ) 
    GROUP  BY sp.hostname, 
              sp.program_name, 
              sp.loginame, 
              sd.NAME 
    ORDER  BY Max(sp.login_time) 
    

    【讨论】:

    • 在 SQL Server 2012 上不适用于我。“accdate”未更新。
    • Accdate 在 SQL Azure 中似乎不存在
    • 2008 年工作 :)
    • 该死 - 这看起来很正确,但 accdate = createdate 在每一行! (并且 2008 年以后的 MS 文章说将来不保证此功能) - docs.microsoft.com/en-us/sql/relational-databases/…
    • 查询在 SQL 2000 上使用 syslogins 而不是 sys.syslogins,但看起来 accdate 是在创建帐户时(与 createdate 相同)。上次更改密码时更新?所以这里没有 SQL 2000 上次登录的记录。
    猜你喜欢
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多