0
データベースのテーブルのメタデータの変更を記録するトリガがあります。 という名前の別のテーブルにログを保存します。tblMonitorChange。 テーブルの名前を変更すると、トリガーは生成されません。トリガを使用してSQL Serverデータベースのテーブルの名前を変更するモニタ
USE ReportServer
GO
CREATE TRIGGER trgMonitorChange
ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE , RENAME_TABLE
AS
set nocount on
declare @EventType varchar(100)
declare @SchemaName varchar(100)
declare @ObjectName varchar(100)
declare @ObjectType varchar(100)
SELECT
@EventType = EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(max)')
,@SchemaName = EVENTDATA().value('(/EVENT_INSTANCE/SchemaName)[1]','nvarchar(max)')
,@ObjectName = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)')
,@ObjectType = EVENTDATA().value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(max)')
-- Is the default schema used
if @SchemaName = ' ' select @SchemaName = default_schema_name from sys.sysusers u join sys.database_principals p
on u.uid = p.principal_id where u.name = CURRENT_USER
insert into tblMonitorChange
select @EventType, @SchemaName, @ObjectName, @ObjectType, getdate(), SUSER_SNAME()
これは1上のサンプル出力である)、2)、次いで3 TestTable2に名前を変更し、それに列を追加すること)のTestTable作成:
このがトリガです。
EventType SchemaName ObjectName ObjectType EventDate
CREATE_TABLE dbo TestTable TABLE 2017-11-01 10:55:44.590
ALTER_TABLE dbo TestTable2 TABLE 2017-11-01 14:36:07.543
ただし、名前の変更は記録されていません。
どのようにしてテーブル名の変更を監視できますか?
ご協力いただければ幸いです。