今朝、お客様の本番 DB で 1 つのビューが欠落していることがわかりました。テストコピーから復元することは問題ありませんでしたが、今後このような状況を回避するために、上司はどのようにしてそれが起こったのかを知りたがっています。
いくつかのシナリオを見つけましfn_dblog
たが、必要な操作タイプを見つけることができませんでした。
今朝、お客様の本番 DB で 1 つのビューが欠落していることがわかりました。テストコピーから復元することは問題ありませんでしたが、今後このような状況を回避するために、上司はどのようにしてそれが起こったのかを知りたがっています。
いくつかのシナリオを見つけましfn_dblog
たが、必要な操作タイプを見つけることができませんでした。
最近発生したと仮定して、デフォルトのトレースからドロップ ビュー イベントをキャプチャできます。
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 か月前に誰がオブジェクトをドロップしたかを突き止めることはほとんどできないことに注意してください。各インスタンスの多くの変数に依存します。)