SQL Server 2005 の変更監査
-
21-08-2019 - |
質問
SQL Server 2005 には、特にストアド プロシージャの削除などを監査する組み込みの方法はありますか?クエリできる履歴テーブルはありますか?今まで何度か行方不明になった謎の sproc があります。
解決
あなたは、この使用してDDLトリガーを構築することができます
他のヒント
あなたが使用している場合にのみ DDLはにトリガまたはトレースにプロファイラを使用しますテキスト "%のDROP%PROC%PROCNAME%"
SQL Server 2008で、彼らは今もプロファイラがauding活動にトレース交換するAUDITを持っていることに注意してください。それは同様ですが、結果を表示するには、独自の設定UIおよびUIを持っている。
あなたは、セットアッププロファイラトレースは、あなたが気にデータベース名に基づく監査スキーマオブジェクト管理イベントやフィルタをキャプチャすることができます。スキーマ内のオブジェクトが作成されているすべての時間は、ドロップされた、それは変化とストアドプロシージャの名前をした者を含みプロファイラでのイベントを発生します編集します。
あなたは、少なくともこれらのプロファイラの列をお勧めします。 ApplicationName - 彼らは変更を行った際にアプリのユーザーの名前が実行されていました データベース名 - 変更されたオブジェクトを含むDatabse EventSubClass - アクションの種類アルターを示し、変更、ドロップなどを作成します。 LoginNameに - 変更を行ったユーザー ObjectNameの - 影響を受けるオブジェクト
[遅れましたが、監査システムが導入される前でも誰が変更を加えたかを確認する方法の詳細を追加しました]
将来の変更を監視するためにデータの監査を開始するさまざまな方法については他の人がすでに説明していますが、もともと監査システムが導入されていなかった場合、歴史的に誰がいつ何をしたかを見つけるのは非常に困難です。
唯一のオプションは、データベースが完全回復モードであると仮定して、トランザクション ログの読み取りを試行することです。問題は、これがデフォルトではサポートされていないことです。オプションは次のとおりです。
- サードパーティツールなど ApexSQL ログ または クエスト・キノピオ
- DBCC LOG や fn_dblog などの文書化されていない関数
詳細については、次のトピックを参照してください。
SQL Server 2008 でトランザクション ログを表示する方法
私は同意するものとします。これは、フィルタを使用して、SQL Serverのプロファイラすることができます。 DDLトリガーは、SQL Serverに存在していました。 あなたはこのようなものを作成することができます:
CREATE TRIGGER ddl_drop_procedure
ON DATABASE
FOR DROP_PROCEDURE
AS
RAISERROR ('You deleted a stored procedure',10, 1)
GO
他のオプションは、CodePlexの、またはapexSQLトリガから自動監査のようなサードパーティ製のツールを使用することです。