1

我有一个非常重要的数据库,其中包含实时客户数据,我们实际上维护了这个数据库。有人在关键表中创建了一个新列。我需要找出是谁创建了这个专栏。

我正在使用 SQL Server2005

这是一个非常关键的问题。我必须如此迅速地回答管理,所以这方面的任何回答都非常有帮助。

非常非常感谢提前。

4

3 回答 3

4

根据更改发生的时间,您可以从默认跟踪中确定这一点(要求您没有禁用它,并且它没有滚动 5 次并在此期间删除了跟踪文件)。

请参阅我对确定架构更改如何发生的回答?有关更多详细信息,请访问 DBA 站点。

于 2012-10-07T11:08:57.657 回答
2

事后没有办法做到这一点,除非你已经预先配置了数据库来这样做。

这个问题可以提供更多信息。这里还有一个链接,提供了更多详细信息。

于 2012-10-07T06:25:05.983 回答
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

有关DDL_TABLE_EVENTS 的更多信息

于 2012-10-07T08:23:27.747 回答