SQL 2008でサーバーレベルのトリガーを作成して、テーブルの作成と削除をログに記録しています。テーブルが作成された/ドロップされたデータベースを記録する必要があります。最初にdb_name()のデフォルト値を持つ列を作成しましたが、これは常にマスターを記録しました。次の私は、私のINSERT文でこれを使用してみました:DDLトリガーからデータベース名を取得
EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(max)')
これは、しばらくの間、働いたが、突然、それはすべてのテーブルの創作のためのマスターを記録し始め、関係なく、テーブルがしていたデータベースの低下テーブル滴のすべてを持っています。 SSMSを使って行われました。なぜ誰かがこの行動を見ているのか分かりませんか?さらに重要なのは、誰も正しいデータベースをログに記録する方法を知っていますか?
編集:私がやっていることが間違っていると思う記事を見つけました。明らかに、server_scopedトリガではなく、データベーススコープ付きトリガからのみcreate_tableとdrop_tableをキャプチャする必要があります。私はまだ誰かがこれを回避する方法を知っている場合でも、質問を開いたままにしたいと思う。
感謝。私はリストのMSDNを検索し、それを見つけることができませんでした。 – jhale
あなたのお手伝いをさせていただきありがとうございます。 –