Dav*_*ton 5 sql-server-2008-r2
我正在寻找一种方法来跟踪 DBO 帐户何时更改。例如,如果有人使用sp_changedbowner
有没有办法在事后确定发生这种情况的时间,甚至更好的是,使用哪个用户进行更改?
这对于跟踪数据库泄露事件中的更改非常有用,例如攻击者更改了权限,所以我怀疑这种可能性一定存在。
我一直试图用谷歌搜索它并在 MSDN 文档中寻找它,但我只是没有找到它。
这是默认跟踪中的。无论您使用sp_changedbowner
正确的现代语法,它都会显示为后者:
alter authorization on database::[foo] to [bar]
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式检索信息:
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX('\', REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT * -- whittle down to the meaningful trace columns
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 152
ORDER BY StartTime DESC;
Run Code Online (Sandbox Code Playgroud)
现在,该事件可能已经发生了很久以前,所以它不一定仍然在痕迹中。