CREATE TABLE または ALTER TABLE 操作が実行されると、SQL サーバーによってどのような種類の監査情報が保存されますか?

StackOverflow https://stackoverflow.com/questions/984558

  •  13-09-2019
  •  | 
  •  

質問

この質問のインスピレーションは、スキーマが完全に変更されたテーブルにデータを挿入する別のストアド プロシージャを呼び出したため、ストアド プロシージャが壊れたということです。

問題は、SQL Server データベースにテーブルがあるのに、それがどのようにしてそこに到達したのかわからないということです。カスタム監査情報用の DDL トリガーが設定されておらず、テーブル DDL のソース管理リポジトリにレコードがありません。SQL Server のみを使用すると、テーブルに関するどのようなフォレンジック データを取得できますか。

私自身、そして同様の状況でこの質問に遭遇した人は、バージョン管理と DDL トリガーに関する提案に助けられることはありません。これらは優れた前進ソリューションであり、企業政治によってそれらのソリューションの実装が許可されている場合、これらのトピックに関する情報はこのブログにたくさんあります。私と私のような状況にある人々が本当に必要としているのは、SQL サーバーからできるだけ多くのデータの断片を収集し、思いつく他のデータと組み合わせられることです。

役に立ちましたか?

解決

残念ながら、次の場合を除いて、何が起こったのかを再現する方法はありません。

  • DBA が実行中のトレースと履歴を持っているかどうか。SQL Server 2005 にはデフォルトのトレースと「ブラックボックス」トレースがありますが、これらはクラッシュの直前に何が起こったかを調べるために使用されます。

  • 完全復旧モデルを使用している場合は、ログ ビューア ツール (無料のレッドゲート1)

  • アクティビティとセキュリティ モデルに応じて、Windows セキュリティ ログをチェックして、DDL 権限でログインしたユーザーを確認することもできます。

  • SQL イベント ログにも情報が含まれている場合があります。たとえば、「許可」エラーをログに記録するトレース フラグを有効にしている場合、それがいつ開始されたかを確認できます。または、変更を行った人がログに記録される他の例外を生成した可能性があります。

  • 権利を持つ人に尋ねてみてはいかがでしょうか。それは本当の間違いである可能性があります(例:開発者だと思った)

他のヒント

次のクエリでは作成し、最後の時間を変更する私を得ています。

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')

あなたは 。でも - トランザクションログは、私はここに、視聴者のいずれかのツールを使用したことがない、と私は、このために戻って時間内に検索する方法を教えてくれませんでしたが、すべてがトランザクション内で起こるので、それはダメだがログに記録されをシステムテーブル...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top