限制 SQL Server 2008 R2 用户只能还原一个数据库(而不是其他数据库)

Tin*_*ell 6 sql-server sql-server-2008-r2

我的理解是用户必须是“dbcreator”才能恢复数据库。但是,如果我希望特定用户仅还原一个特定数据库,但不能访问或还原服务器上的任何其他数据库,该怎么办?“dbcreator”不允许该用户从本质上恢复任何数据库吗?

Aar*_*and 1

我认为您可以使用服务器级 DDL 触发器捕获此内容。但是,RESTORE_DATABASE这是我期望看到但尚未(尚未?)支持的事件,并且无论您是从头开始还是使用恢复数据库WITH REPLACE,该CREATE_DATABASE事件都不会被触发。

当然,即使是RESTORE_DATABASE受支持的事件,您也无法有条件地阻止实际恢复,因为创建/恢复数据库不是事务性的,因此无法回滚(并且 DDL 触发器位于触发器之后,而不是之前/而不是触发器)。

我认为您只能审核此活动,然后在事后做出响应,并且我确信您可以通过审核规范、扩展事件或跟踪,甚至事件通知等来做到这一点。