我们今天早上发现客户的生产数据库中遗漏了一个视图。从测试副本中恢复它并不是问题,但是我的老板想知道它是如何发生的,以避免将来出现这种情况。
我找到了fn_dblog
的一些场景,但无法找到我需要的操作类型。
答案 0 :(得分:2)
您可以从默认跟踪中捕获丢弃视图事件,假设它们最近发生了:
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
LoginName,
HostName,
StartTime,
ObjectName
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 47
AND ObjectName = N'MyView';
(顺便说一句,此方法对恢复模型没有任何依赖性;但是您应该知道默认跟踪中的内容最终将推出,因此您不太可能找到谁丢弃了一个对象6个月前它停留多长时间取决于每个实例的很多变量。)