【问题标题】:How to fire a DDL trigger while detaching a database in SQL Server 2008 R2?在 SQL Server 2008 R2 中分离数据库时如何触发 DDL 触发器?
【发布时间】:2014-04-23 07:49:44
【问题描述】:

我知道简单的 ddl 触发器,例如 Create_TableAlter_TableDrop_Table,我使用过这个。

现在我想知道类似的事情:当用户分离数据库时,无论用户是否有效,都应该触发触发器。

Create Trigger trgNoNewTables
ON Database
For Create_Table
AS
BEGIN
      Print 'No Tables Please'
      ROLLBACK
END

我可以像上面的触发器一样知道有任何用于分离和附加的触发器吗?

【问题讨论】:

  • @marc_s 通过研究上面的链接,我只找到了那些东西。

标签: triggers sql-server-2008-r2 ddl detach


【解决方案1】:

你不能。

您最多可以为创建/更改/删除数据库创建触发器:

create trigger foo
on all server
for create_database, drop_database, alter_database
as
print 'triggered!'
go

sp_detach_db 不会触发它(sp_attach_db 会)。

限制用户执行操作的正确方法是安全性(授予/拒绝/撤销)。没有其他方法会起作用。如果不允许用户执行某项操作,我建议您不要授予权限。

【讨论】:

  • 你能举一个安全的例子吗(授予/拒绝/撤销)
  • 我执行了触发器,但它不起作用。我自己尝试过这些 Create_database ....,我没有得到任何结果,即为什么我发布这个问题。
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多