Cut*_*ear 4 sql-server audit logs t-sql sql-server-2008-r2
我和我的同事没有使用“远程桌面”连接到 SQL Server,而是使用 SQL Server Management Studio 将更改应用于远程服务器(每个用户都有自己的凭据)。
我们中的一个人对 SQL 表进行了一些更改,这使所有数据都处于危险之中。我很确定我们中的一个人是有罪的。我的问题是这个。我怎样才能证明这一点?是否有任何类型的查询来显示从客户端到远程 SQL Server 实例的所有过去的远程连接?也许有 IP 地址、计算机名称、凭据。
SQL Server Management Studio 是否有某种日志文件或任何查询来显示远程服务器登录?
PS 远程 SQL Server 实例上没有完整备份。日志很干净。
这是我们登录 SQL Server 的方式:

您可以使用(IP,端口号)登录到远程服务器。默认情况下,SQL Server 不记录登录信息。
如果您有非常干净的日志,那么您将不会获得登录历史数据。如果您在非常干净的日志之前配置了 SQL 登录审计。然后在某个时间点会有一些变化,通过 TSQL 获取“SQL 登录审计”详细信息,例如
EXEC xp_readerrorlog;
Run Code Online (Sandbox Code Playgroud)
它只会提供您配置 SSMS 的“SQL 登录审核详细信息”。喜欢
1) Failed logins only
2)Successful logins only
3)Both Failed and successful logins
Run Code Online (Sandbox Code Playgroud)
根据 MSDN BOL https://msdn.microsoft.com/en-us/library/ms176013.aspx有关当前用户的远程服务器登录详细信息,您可以从 TSQL 中找到。
SELECT login_name ,COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
Run Code Online (Sandbox Code Playgroud)
参考https://www.mssqltips.com/sqlservertip/1735/auditing-failed-logins-in-sql-server/和https://msdn.microsoft.com/en-us/library/cc280728.aspx
简短的回答是,您无法\xe2\x80\x99 查看更新的历史数据,除非您在发生更改时已经有一些审核系统。
\n\n您可以做的是尝试使用一些第三方工具(例如 ApexSQL Log)读取事务日志,并检查 t.txt 中的某处是否写入了类似的信息。日志。
\n\n我知道事务日志中写入了很多可用于审核的历史数据,但 I\xe2\x80\x99m 不能 100% 确定找到用户名。
\n\n如果您想设置一个系统来跟踪此情况,您可以尝试 DDL 触发器、SQL 跟踪等\xe2\x80\xa6
\n\n做到这一点的最佳方法是使用扩展事件来捕获登录,以便您准确地知道谁正在连接到什么。您还可以添加扩展事件来捕获它们正在运行的查询。但是,您必须对其进行设置才能捕获此内容。系统内置的任何东西都不会自动捕获此类信息。但是,您可以选择查看缓存以查看运行了哪些查询,但不知道是谁运行了它们。您可以查看 sys.dm_exec_query_stats 以查看有关当前缓存中的查询的属性聚合。这不会满足您的需要,但它是您可以使用的附加调查工具,直到您设置了扩展事件。
\n\n另外,如果运气好的话,您可以尝试以下步骤:
\n\n再次需要注意的一点是,此报告显示了有关登录的一些信息,但不显示历史信息。仅显示当前登录的用户。
\n