Mat*_*ton 9 sql-server sql-server-2008-r2
是否可以让SQL Server 2008 R2 Standard在任何已还原或附加到实例的给定数据库中自动执行存储过程?
我已经通过创建服务器级触发器接近解决方案,该触发器在 DDL 事件CREATE_DATABASE或被ALTER_DATABASE触发后执行给定数据库中的存储过程。不幸的是,这不适用于数据备份恢复。
详细地说,我们有一个“清理”存储过程,它存在于我们恢复的每个数据库中,我正在寻找一种方法,每当备份恢复到实例时自动执行此过程。
谷歌搜索指出我可以在 SQL Server 中配置审计或策略来获得此功能,但这些功能乍一看非常令人难以抗拒,所以我不知道审计或策略是否是开始调查的途径。
Aar*_*and 10
是否必须在还原完成后立即执行,还是可以短暂延迟?我的一个想法是让作业每分钟运行一次,并检查Audit Backup/Restore Event默认跟踪中的 。
DECLARE @fn VARCHAR(MAX);
SELECT @fn = SUBSTRING([path], 0, LEN([path])-CHARINDEX(CHAR(92), REVERSE([path]))+1)
+ CHAR(92) + 'Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
DatabaseName,
StartTime,
TextData
FROM sys.fn_trace_gettable(@fn, DEFAULT)
WHERE EventClass = 115
AND TextData LIKE '%RESTORE%'; -- since can't differentiate between backup/restore
Run Code Online (Sandbox Code Playgroud)
您可以根据 StartTime 存储您已经完成的清理,甚至限制每分钟运行的跟踪查询(或任何您可接受的延迟阈值)只查看大于您拉取的最后一行或最后一行的 StartTime 值作业运行的时间,以较短者为准。
| 归档时间: |
|
| 查看次数: |
7855 次 |
| 最近记录: |