2013-09-30 49 views

回答

2

SQL Server不审核默认情况下这些信息,所以没有,这个数据是不会在事后提供给您。 (我查了默认的跟踪,它似乎并没有在此记录。)如果你还没有,因为重新启用的工作,你可能能够值相关的msdb.dbo.sysjobs.modified_date与其他信息记录,但我不知道你可能能够确定的其他事件属于同一个用户,与修改工作的用户属于同一用户。同样,如果作业尚未修改(或者在修复它之前知道修改时间),并且假设更改发生在仍处于当前默认跟踪的滚动窗口内的时间范围内,则可以检查大约在同一时间其他活动:

DECLARE @ModifiedDate DATETIME; 
SET @ModifiedDate = -- plug in the value here 

DECLARE @path NVARCHAR(260); 

SELECT @path = REVERSE(SUBSTRING(REVERSE([path]), 
    CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc' 
FROM sys.traces WHERE is_default = 1; 

SELECT * FROM sys.fn_trace_gettable(@path, DEFAULT) 
    WHERE EndTime >= DATEADD(MINUTE, -30, @ModifiedDate) 
    AND EndTime < DATEADD(MINUTE, 30, @ModifiedDate) 
    ORDER BY EndTime DESC; 

你可以建立自己的服务器端跟踪,扩展事件会话,事件通知或审核,以确保您能够审计在未来该信息(或简称限制整个团队混淆工作的能力)。

+0

我检查了所有这些最近没有成功。 –

+0

@CRAFTYDBA你检查了所有这些? –

+0

'WHERE'子句后的逗号将导致错误。 – chridam

2

最简单的部分是找出最近被禁用的工作和/或时间表。

-- Use msdb 
use msdb 
go 

-- Jobs that have been recently disabled 
select 
    [name], [enabled], [date_created], [date_modified] 
from sysjobs 
where [date_modified] > '2013-09-30' and enabled = 0 
order by [date_modified] desc 
go 


-- Schedules that have been recently disabled 
select 
    [name], [enabled], [date_created], [date_modified] 
from sysschedules 
where [date_modified] > '2013-09-30' and enabled = 0 
order by [date_modified] desc 
go 

除非用户或系统管理员取得了该作业的所有权,否则很难找出是谁做的。

的事情,我想,但没有工作内容如下所示。

1 - 服务器或代理日志中的任何条目? NO DICE

2 - 缺省服务器端跟踪是否取得事件? NO DICE

3 - 我可以查看交易日志以查找此人吗? MSDB使用简单的恢复模式。 NO DICE

4 - 健康检查(扩展事件)是否跟踪此信息。我怀疑,但想检查。 NO DICE

5 - 因为这不是错误,所以没有任何东西会被记录到windows事件中。 NO DICE

因此,经过几次谷歌搜索,我认为你是一对夫妇的解决方案。

A - 创建上相应的系统表的触发器和保存审计信息。 查看我的博客'How to audit and prevent unwanted user actions.'。这是一个完整的演示文稿,我在SQL星期六做。

乙 - 创建http://www.bimonkey.com/2009/12/sql-server-2008-auditing/审计规范,但你必须读输出文件。

Ç - 添加服务器端跟踪或扩展事件来捕获数据。

祝你好运。

约翰