30/07/2010

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

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?

Felipe Sbragia

Respostas

30/07/2010

Fabriciolimadba

  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?
Responder Citar

30/07/2010

Fabriciolimadba

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.
Responder Citar

02/08/2010

Felipe Sbragia

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.
Responder Citar