Mag*_*ier 5 authentication sql-server sql-server-2008-r2 users logins
是否可以找出谁使用了 SQL-Server 登录?
让我们假设我们怀疑有人滥用 SQL 登录名,该登录名本应由应用程序仅用于登录 SQL-Server。使用SQL登录的域用户是否记录在任何地方,以便我们得出谁使用它的结论?
不,如果用户使用 SQL 身份验证登录连接到 SQL Server,则无法确定由哪个 Windows 登录负责。SQL Server 只能记录它已经提供的信息,而在使用 SQL 身份验证时,不会将 Windows 登录/域/组信息传递给 SQL Server。
您可以查看类似的 DMVsys.dm_exec_sessions并sys.dm_exec_connections获取其他支持信息,例如 IP 地址和主机名,但是:
您甚至无法阻止用户以此 SQL 身份验证登录身份进行连接,除非您将应用程序更改为使用 Windows 身份验证并完全禁用 SQL 身份验证。当然,您可以设置一个登录触发器来阻止登录,除非 host_name 和/或 program_name 在所需的一组值内,但这些东西很容易被欺骗,因此如果这种行为是恶意的,您的选择就非常有限。
您可以使用 DMV 查看当时登录的人员,但这不会为您提供任何历史信息。
SELECT c.session_id AS spid, c.auth_scheme, s.login_name,
s.[host_name], c.client_net_address
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s ON c.session_id=s.session_id;
Run Code Online (Sandbox Code Playgroud)
我想您可以在登录触发器中使用此代码并将信息保存到表中,但如果您需要运行日志,您可能需要查看扩展事件或运行跟踪(SQL Server Profiler)。