Array
(
)

[Trigger DDL] Pré-execução, Como executar uma TRIGGER DDL antes do próprio comando que o disparou?

Felipe Sbragia
   - 30 jul 2010

Olá pessoal, boa tarde,

Estou criando uma TRIGGER DDL em meu BD para monitorar as alterações de alguns objetos (procs, views, etc.).

Nos meus clientes, as TRIGGERS ficarão criptografadas (WITH ENCRYPTION).
Porém, em minha base local (onde os Desenvolvedores atuam e onde irão criar/alterar/testar as procs), esta criptografia não pode ocorrer.

Como todos nós sabemos, dizer a um Desenvolvedor que ele deve retirar o comando WITH ENCRYPTION ao executar o comando na base local, é o mesmo que dizer a um macaco que ele não deve comer a banana (é só questão de tempo para que ele faça exatamente o contrário - e eu me incluo nisso ). Neste caso, seria perdido o script pois em todos os locais estaria criptografado.

Resumidamente, o que eu quero é criar outra TRIGGER DDL para, ANTES de executar um comando (CREATE, ALTER...) verificar se o comando WITH ENCRYPTION foi utilizado e retirá-lo (ou simplesmente abortar a execução).

Alguém sabe como fazer isso ou conhece alguma outra forma de barrar isto?

Fabriciolimadba
   - 30 jul 2010

  Para executar algo antes da instrução em uma trigger, deveria se utilizar uma INTEAD OF TRIGGER. Entretanto, acho que isso não funciona para TRIGGERS DDL.       Vc utiliza o SQL Server 2008?

Fabriciolimadba
   - 30 jul 2010

Achei que era possível fazer isso através de polices do 2008,mas deu uma olhada aqui e não encontrei nada a respeito.

Felipe Sbragia
   - 02 ago 2010

A versão do SQL varia de cliente para cliente.
A maioria utiliza 2005, porém temos um que utiliza o 2008 e outro que ainda está no 2000.