2012-04-12 13 views
0

このサンプルコードがあります。それはすべてのT - SQLコードで正常に動作しますが、マウスクリックでSSMSにテーブルをドロップすると、イベントは追跡されません - 質問はなぜですか?DDLトリガーが確実に起動しないのはなぜですか?

-- create the table to store the events 
CREATE TABLE dbo.CREATE_TABLE_LOG (
eventTime datetime 
, eventOwner nvarchar(100) 
, eventTSQL nvarchar(3000) 
) 
GO 
-- create the DDL trigger 
CREATE TRIGGER DDLTrigger_CreateTable ON DATABASE FOR create_table, alter_table, drop_table 
AS 
DECLARE @data XML 
SET @data = EVENTDATA() 
INSERT INTO CREATE_TABLE_LOG 
VALUES (
GETDATE() 
, CURRENT_USER 
, @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 
'nvarchar(1000)') 
) 
GO 

答えて

1

私はロギングテーブルと提供DDLトリガー与えられた、SQL Server 2005およびSQL Server 2008の両方にチェックしました、それは正確にかかわらず、私はSSMSでそれを落としたかの、ドロップを記録しました。

使用している正確なメニュー/コンテキストメニューコマンドを入力して、1つのデータベースにテーブルをドロップしていないことと、別のテーブルでログテーブルを読み取ることを再確認できます)。

+0

ご質問ください。私は、私の仕事を二重チェックした後、さらに詳しい情報をお届けします。 – Ice

+0

私はそれを上記のようにチェックし、それはうまくいきました。 SSMSでtogehterをクリックしてテーブルを再作成すると、ALTERテーブルが少しトリッキーになります(ステートメントへの挿入と名前変更テーブルは記録されません)。 – Ice

関連する問題