1

今朝、お客様の本番 DB で 1 つのビューが欠落していることがわかりました。テストコピーから復元することは問題ありませんでしたが、今後このような状況を回避するために、上司はどのようにしてそれが起こったのかを知りたがっています。

いくつかのシナリオを見つけましfn_dblogたが、必要な操作タイプを見つけることができませんでした。

4

1 に答える 1

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 か月前に誰がオブジェクトをドロップしたかを突き止めることはほとんどできないことに注意してください。各インスタンスの多くの変数に依存します。)

于 2013-07-29T22:23:06.157 に答える