Saya memiliki basis data dengan 104 pemicu, apakah ada cara untuk menghapus semua pemicu dengan satu perintah dari satu basis data yang disebut 'system_db_audits?
sql-server
sql-server-2008
trigger
Mohamed Mahyoub
sumber
sumber
DROP TRIGGER
pernyataan itu membutuhkan terminator;
?Jika Anda ingin menjalankan pekerjaan sql pada server pusat [ServerA] untuk melakukan pekerjaan penghapusan pemicu, saya akan memberikan versi PowerShell dengan asumsi Anda memiliki instance SQL Server 2012 (atau lebih tinggi) dengan modul SQLPS diinstal pada [ServerA]
Katakanlah Anda ingin menghapus semua pemicu dalam database [AdventureWorks] pada [ServerB] contoh SQL Server (SQL Server 2005+).
Anda dapat menjalankan PS berikut di [ServerA]:
Harap ingat untuk mengganti ServerB dan AdventureWorks dengan nilai Anda sendiri.
Ini adalah solusi yang cukup fleksibel yang dapat Anda sesuaikan dengan mudah untuk beradaptasi dengan persyaratan lain yang berbeda, seperti hanya menghapus pemicu yang dimiliki oleh seperangkat tabel tertentu, atau menonaktifkan (bukannya menghapus) beberapa pemicu tertentu dll.
Sebenarnya, solusi yang disediakan oleh @Mark Sinkinson tidak benar karena persyaratannya bukan untuk menghapus pemicu pada db 'system_db_audits', tetapi untuk menghapus pemicu pada db lain dari 'system_db_audits'. Ini berarti Anda perlu membuat sql dinamis di 'system_db_audits' untuk membungkus "sql dinamis" yang disediakan oleh @Mark Sinkinson untuk menghapus pemicu target tersebut dengan asumsi bahwa kedua 'system_db_audits' dan target db berada pada contoh server sql yang sama. Kalau tidak, jika dua dbs tidak pada contoh yang sama, itu akan menjadi jauh lebih "jelek" untuk menangani penghapusan (seperti melalui server yang terhubung dll). Dalam skenario seperti itu, PS adalah solusi elegan di mana pun target db berada atau tidak pada instance sql yang sama.
sumber