如何跟踪DDL语句的数据库更改?

时间:2013-03-22 09:43:51

标签: sql-server

我在数据库中进行了更改,但我已经使用旧数据库并在新数据库中进行更改,以便我可以识别新的数据库更改。

是否有人使用sql server有任何想法?

1 个答案:

答案 0 :(得分:2)

好问题hardik

甚至我也面临同样的问题,并得到了很好的解决方案。

您可以使用的是sqlserver.it中的Eventdata()函数,它提供了特定数据库更改的所有信息,包括xml格式的sqlcommands。 欲获得更多信息 您可以查看此链接http://msdn.microsoft.com/en-IN/library/ms173781.aspx

在这里你可以这样做

DECLARE @data XML
SET @data = EVENTDATA()
INSERT INTO dbo.AdministratorLog(databasename, eventtype,objectname, objecttype,  sqlcommand, loginname)
VALUES(@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'),  
@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
@data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
@data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)')
)