如何判断 DBO 何时更改(如果可能,由谁更改)

Dav*_*ton 5 sql-server-2008-r2

我正在寻找一种方法来跟踪 DBO 帐户何时更改。例如,如果有人使用sp_changedbowner有没有办法在事后确定发生这种情况的时间,甚至更好的是,使用哪个用户进行更改?

这对于跟踪数据库泄露事件中的更改非常有用,例如攻击者更改了权限,所以我怀疑这种可能性一定存在。

我一直试图用谷歌搜索它并在 MSDN 文档中寻找它,但我只是没有找到它。

Aar*_*and 4

这是默认跟踪中的。无论您使用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)

现在,该事件可能已经发生了很久以前,所以它不一定仍然在痕迹中。