2014-04-23 8 views
0

Я знаю простые триггеры ddl, такие как Create_Table, Alter_Table, Drop_Table, я работал с этим.Как запустить триггер DDL при отсоединении базы данных в SQL Server 2008 R2?

Теперь я хочу знать о чем-то вроде: когда пользователь отсоединяет базу данных, запускается триггер, является ли пользователь действительным или нет.

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

Могу ли я узнать, как приведенный выше триггер есть какой-либо спусковой крючок для отсоединения и прикрепления?

+0

@marc_s, изучая приведенную ссылку, я нахожу эти вещи. – Pallavi

ответ

1

Вы не можете.

В лучшем случае вы можете создать триггер (ы) для создания/изменить базу данных/вывода:

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

но sp_detach_db не будет стрелять (sp_attach_db будет).

Правильный подход к ограничению пользователей от выполнения действий - это безопасность (grant/deny/revoke). Ничто другое не сработает. Я предлагаю вам не предоставлять разрешения, если пользователям не разрешено выполнять действие.

+0

Можете ли вы привести пример безопасности (grant/deny/revoke) – Pallavi

+0

Я запускаю триггер, но он не работает. я попытался перед собой создать Create_database ...., я не получаю никакого результата, то есть, почему я отправляю вопрос. – Pallavi

+0

[Разрешения (движок базы данных)] (http://technet.microsoft.com/en-us/library/ms191291.aspx) –

 Смежные вопросы

  • Нет связанных вопросов^_^