SQL Server Management Studio - 运行命令的历史记录

时间:2014-07-01 07:30:55

标签: sql-server ssms

我之前更改了一个表,添加了一个列并修改了一个存储过程。

我不记得究竟是哪个表和哪个存储过程, sql管理工作室是否有一些关于在特定数据库中进行了哪些更改的日志?

我已经尝试了How to see query history in SQL Server Management Studio所描述的内容,但我没有找到对数据库所做的更改

4 个答案:

答案 0 :(得分:6)

您可以通过以下几种方式获取此信息。首先,您可以尝试标准报告 - >架构更改历史记录。

此信息来自:

SELECT cat.name AS Category
, b.name AS EventCaptured
, c.name AS ColumnCaptured
FROM fn_trace_geteventinfo(1) AS a
INNER JOIN sys.trace_events AS b
ON a.eventid = b.trace_event_id
INNER JOIN sys.trace_columns AS c
ON a.columnid = c.trace_column_id
INNER JOIN sys.trace_categories AS cat
ON b.category_id = cat.category_id
ORDER BY Category, EventCaptured, ColumnCaptured

或者,查询sys.traces以查找默认跟踪的位置,并将其提供给fn_trace_gettable,如下所示。

SELECT *
FROM fn_trace_gettable
('C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\log.trc', default)

答案 1 :(得分:4)

您可以使用Security\Server Audit Specification并在数据库上启用DATABASE_OBJECT_CHANGE_GROUP审核。

enter image description here

使用以下参考以使用SQL Server服务器审核。

  1. CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
  2. Create a Server Audit and Server Audit Specification

答案 2 :(得分:3)

您可以使用sys.objects表中的modify_date列

SELECT *
FROM SYS.OBJECTS
WHERE Modify_Date BETWEEN <date_of_modification> AND <date_of_modification> + 1

然后你可以尝试缩小范围。

您可以更具体,只运行表和存储过程的查询。

SELECT *
FROM SYS.objects
WHERE TYPE IN ('IT', 'S', 'U', 'P', 'PC', 'X')
    AND modify_date BETWEEN '10-Jun-2014' AND '11-Jun-2014'

答案 3 :(得分:1)

我为SSMS开发了SSMSBoost加载项,我们在那里有“执行查询历史记录”。记录所有操作的时间戳,连接信息和执行结果。如果您在安装了SSMSBoost的SSMS中进行所有更改,这肯定会起作用。如果有人将从其他机器执行更改,您将看不到它们,直到他也使用SSMSBoost并且您共享执行历史记录。