您可以使用DDL觸發器和捕捉事件創建一個表,火災發生後
CREATE TRIGGER safety
ON DATABASE
FOR create_table
AS
select eventdata()--this is sample,here you need to parse event data
現在創建一個表將確保,你有以下的XML
<UserName>dbo</UserName>
<DatabaseName>PerformanceV3</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>test111</ObjectName>
<ObjectType>TABLE</ObjectType>
<TSQLCommand>
<SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
<CommandText>create table dbo.test111
(
id int
)
</CommandText>
</TSQLCommand>
您可以分析訪問以上XML和檢查所需的列,可以回滾或做你需要的任何東西
---以下是僞代碼,你可以如何做到這一點
Alter TRIGGER safety
ON DATABASE
FOR create_table
AS
Begin
Declare @EventData XML
set @eventdata= EVENTDATA();
declare @tsqlcmd varchar(max)
Set @tsqlcmd= @EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'NVARCHAR(MAX)')
if @tsqlcmd not like '%columns you need%'
begin
print 'add those two columns'
rollback
end
end
或乾脆在觸發自動添加列... –
可能是值得包括修改表的語句了。 –
@GarethLyons:現在加入 – TheGameiswar