我知道你可以使用查询来找出哪些数据库已启用自动缩小,但我想知道这是否可以完成维护计划。 现在我们只有几个维护计划,所以很容易手动检查,但是我可以看到有一个查询是如何做到的。
我想这里是你想要的。 Jamie Thompson发布了如何从SSIS包中提取信息。 维护计划创build为SSIS包,您可以使用这篇文章中的信息来实现你想要的。 祝你好运!
我可能已经find了在我的环境中进行这项工作的方法。 我们的维护计划是使用SQL Server 2008使用的拖放系统创build的,所以如果您不使用该系统,这可能不会起到相同的作用。 这是我使用的查询:
SELECT DISTINCT line3 FROM sysmaintplan_logdetail
WHERE line1 LIKE'%Shrink%'或line2 LIKE'%Shrink%'
我意识到line1-3列可能看起来有点混乱,所以我会试着解释一下。 sysmaintplan_logdetail表有一个line1-5列。 这5条线似乎描述了维护计划中特定任务正在发生的事情。 它们并不总是完整的,我不确定SQL Server是否需要创build5行以上的内容,但这就是我所需要的。
当我查看sysmaintplan_logdetail表中的条目时,我注意到,第1行和第2行都包含了收缩操作在维护计划中完成时收缩的单词。 具体的线路是:
line1 – 收缩数据库任务(服务器名称)
line2 – 在本地服务器连接上收缩数据库
line3 – 包含数据库名称
我不能保证这些条目将在另一台服务器上的相同位置或甚至相同的string,但看起来有可能使用sysmaintplan_logdetail查看几分钟后创build一个简单的查询。 希望这可以帮助别人。
msdb.sysjobsteps表有一个名为command的列。 此命令列包含要从作业的特定步骤运行的SQL语句。 以下查询应确定任何作业步骤是否缩小数据库:
select名称
从sysjobs INNER JOIN sysjobsteps
ON sysjobs.job_id = sysjobsteps.job_id
WHERE命令LIKE'%Shrink%'
这应该确定服务器上是否有任何使用Shrink的作业并提供了作业名称。