Eu tenho um banco de dados com 104 gatilhos, existe uma maneira de excluir todos os gatilhos com um único comando de um único banco de dados chamado 'system_db_audits?
sql-server
sql-server-2008
trigger
Mohamed Mahyoub
fonte
fonte
DROP TRIGGER
declarações não precisam de terminadores;
?Caso você deseje executar um trabalho sql em um servidor central [ServerA] para executar o trabalho de exclusão de gatilhos, fornecerei uma versão do PowerShell assumindo que você tenha uma instância do SQL Server 2012 (ou superior) com o módulo SQLPS instalado no [ServerA]
Digamos que você queira excluir todos os gatilhos no banco de dados [AdventureWorks] na instância do [ServerB] SQL Server (SQL Server 2005+).
Você pode executar o seguinte PS no [ServerA]:
Lembre-se de substituir o ServerB e o AdventureWorks por seus próprios valores.
Essa é uma solução bastante flexível que você pode personalizar facilmente para se adaptar a outros requisitos diferentes, como apenas os gatilhos de exclusão pertencem a um conjunto específico de tabelas ou desabilitar (em vez de excluir) alguns gatilhos específicos etc.
A rigor, as soluções fornecidas pelo @Mark Sinkinson não estão corretas porque o requisito não é excluir gatilhos no banco de dados 'system_db_audits', mas excluir gatilhos em outro banco de dados de 'system_db_audits'. Isso significa que você precisa criar um sql dinâmico em 'system_db_audits' para agrupar o "sql dinâmico" fornecido pelo @Mark Sinkinson para excluir os gatilhos de destino, assumindo que ambos 'system_db_audits' e o db de destino estejam na mesma instância do servidor sql. Caso contrário, se os dois dbs não estiverem na mesma instância, será muito "feio" lidar com a exclusão (como por meio do servidor vinculado etc.). Nesse cenário, o PS é uma solução elegante, não importa onde o banco de dados de destino esteja ou não na mesma instância sql.
fonte