使用SQL Server 2008R2。
我们正在尝试审核用户登录,以查看用户帐户处于非活动状态的时间以及我们需要提供多少许可证。我目前正在从以下工作中提取信息:
Insert into [User_Login_Audit]
Select
login_name,
max (login_time) as last_login_time,
last_successful_logon,
(select @@servername) as server_instance,
getdate()
from sys.dm_exec_sessions
group by login_name, last_successful_logon;
然后我使用链接服务器通过以下查询提取信息:
Use B_DBA
GO
SELECT
[Login_name]
,max([last_login_time]) as Last_login_date
,[server_instance],
DATEDIFF(day, getdate(), max([last_login_time])) Days
FROM [B_DBA].[dbo].[User_Login_Audit]
where Login_name not in ('NT AUTHORITY\SYSTEM', 'sa','')
and last_successful_logon is not null
group by Login_name,server_instance
这是拉
的结果服务器名称| Server \ instance Login_name | PROD \ account_name Last_login_date | 2016-10-16 11:29:05.950 server_instance | Server \ instance Days | -24
我遇到的问题是,显然sys.dm_exec_sessions没有给我现在处于安全状态的当前活动用户,但是所有已登录的用户,其中许多用户已从安全性的当前访问中删除。
我需要的是一种提取当前处于数据库安全性的Sql用户,Windows用户和Windows用户组登录的方法。我需要知道用户上次登录的时间,以便我可以计算天数,即。 30,60,90。
我正在做的是给我信息,但不是最准确的信息,需要大量的额外工作。我会很感激这方面的选择。