2011-04-20 43 views
3

在我们的组织中,数据库服务器从SQL 2005升级到2008年。每当我们恢复任何我们收到的数据库备份时。它的兼容性级别不是100.在某些情况下,它的兼容级别低于100会产生问题。我写了一个将所有数据库的兼容性级别更改为100的过程。通过一个调度程序,我每10分钟调用一次该过程。在数据库服务器上恢复任何数据库后执行过程

我想如果有人还原任何数据库。所以应该自动调用该过程。或者如果任何数据库恢复,如何调用该过程?

我可以通过下面的命令更改兼容性级别。

EXEC sp_dbcmptlevel <Database Name>, 100; 

ALTER DATABASE <Database Name> SET COMPATIBILITY_LEVEL = 100; 
+1

查看http://stackoverflow.com/questions/952611/is-it-possible-to-have-a-database-trigger-on-restore-in-sql-2005-or-2008 – 2011-04-20 11:03:18

+0

虽然我确实有一定要去看看'EVENT NOTIFICATIONS'。我发现使用[this as a template]设置通知非常简单(http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/04/06/event-notifications-monitoring-blocked-processes-and- other-events-end-to-end-how-to-set-it-up-and-make-it-work.aspx),但是在设置权限时开始失去生存意愿,所以Activation Procedure工作正常。 [可能覆盖在这里](http://rusanu.com/2006/03/01/signing-an-activated-procedure/) – 2011-04-20 14:55:29

回答

2

你描述被称为基于策略的管理和SQL Server内置了支持这一什么,看到Administering Servers by Using Policy-Based Management。将服务器添加到PBM基础中,然后部署数据库兼容级别为100或更高的策略并执行此策略。 PBM将负责其余部分,强制将兼容级别保持在100,不仅在备份之后,而且在执行任何其他操作之后,并且防止尝试降低兼容级别。

这里有一篇文章描述如何做到这一点,附图:Identify Databases Not in SQL Server 2008 Compatibility Level Using Policy Based Management

相关问题