【发布时间】:2021-12-11 05:14:09
【问题描述】:
我有一个 SQL Server (2000),其中有许多我认为不再使用的帐户。 有什么方法可以查出每个帐户最后一次使用的时间?
另外,创建一段时间内登录到服务器的帐户表的最简单方法是什么。
【问题讨论】:
标签: sql-server
我有一个 SQL Server (2000),其中有许多我认为不再使用的帐户。 有什么方法可以查出每个帐户最后一次使用的时间?
另外,创建一段时间内登录到服务器的帐户表的最简单方法是什么。
【问题讨论】:
标签: sql-server
SQL Server 可以审核登录。阅读更多详情 here for SQL 2008 和 here for SQL 2000
我认为除非启用审核,否则您无法跟踪登录使用情况。
【讨论】:
如果用户列在文件夹“安全”-->“登录”下,则此查询将为您提供用户上次登录的日期/时间。
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)
【讨论】: