我有一个非常关键的数据库,包含实时客户数据,我们实际上维护着这个数据库。有人在关键表中创建了一个新列。我需要找出谁创建了这个专栏。
我正在使用SQL Server2005
这是一个非常关键的问题。我必须如此迅速地回答管理,所以这方面的任何答案都非常有帮助。
非常非常感谢提前。
答案 0 :(得分:4)
根据更改发生的时间,您可以从默认跟踪中确定这一点(要求您没有禁用它,并且要求它不会滚动5次并同时删除跟踪文件)。
有关其他详细信息,请参阅我在DBA网站上对Determining how a schema change occurred?的回答。
答案 1 :(得分:2)
除非您已预先配置数据库,否则事后无法做到这一点。
This question可以提供更多信息。还有一个链接here,提供了更多详细信息。
答案 2 :(得分:1)
将EventData()函数与DDL触发器一起使用 创建事件日志表
--CREATE TABLE EvtLog
(
PostTime DATETIME,
LoginName NVARCHAR(100),
EventType NVARCHAR(100),
TSQLCommand NVARCHAR(2000)
)
GO
--Create the DDL trigger
CREATE TRIGGER trPreventTblChange
ON DATABASE
FOR ALTER_TABLE
AS
DECLARE @Data XML
SET @Data = EventData()
INSERT EvtLog (PostTime, LoginName, EventType, TSQLCommand)
VALUES
(GETDATE(),
CONVERT(NVARCHAR(100), CURRENT_USER),
@Data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
@Data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;
GO
的更多信息