Bagaimana tidak menonaktifkan pemicu selama penerapan di SQL Server

Saat menerapkan proyek Database SQL Server (menggunakan wizard SSDT Publish atau penerapan DACPAC), skrip SQL otomatis dimulai dengan menonaktifkan semua pemicu.

Bagaimana cara menghindari hal ini?

Dan apa efek samping jika pemicu tidak dinonaktifkan?

PRINT N'Disabling all DDL triggers...'
GO
DISABLE TRIGGER ALL ON DATABASE
GO
<ALL DB CHANGES>
GO
PRINT N'Reenabling DDL triggers...'
GO
ENABLE TRIGGER [LogSchemaChanges] ON DATABASE
GO
PRINT N'Update complete.';

Mengapa saya melakukan ini? Kami memiliki pemicu yang mencatat semua perubahan skema ke log audit. ...dan Ironis sekali kan, ya...


person Martin Thøgersen    schedule 07.01.2019    source sumber
comment
ini jelas merupakan opsi yang dapat Anda aktifkan atau nonaktifkan   -  person Martin Smith    schedule 07.01.2019
comment
Efek sampingnya adalah pemicu tersebut akan diaktifkan... dan Anda akan melihat kinerjanya meningkat.   -  person scsimon    schedule 07.01.2019


Jawaban (1)


Untuk penerapan Publish Wizard manual, ubah perilaku di bawah:

  1. Pengaturan Penerbitan Lanjutan › Umum › Opsi Penerapan Lanjutan.
  2. Hapus centang pada Nonaktifkan dan aktifkan kembali pemicu DDL.

Untuk penerapan DACPAC otomatis melalui SQLPackage, setel publikasikan properti:

/p:DisableAndReenableDdlTriggers=False

Menentukan apakah pemicu Data Definition Language (DDL) dinonaktifkan pada awal proses publikasi dan diaktifkan kembali pada akhir tindakan publikasi.

person Martin Thøgersen    schedule 07.01.2019
comment
** Perhatikan bahwa menggunakan tanda DisableAndReenableDdlTriggers membuat pemicu DIAKTIFKAN lagi SEBELUM Skrip Pasca-Penerapan dimulai ** Ini berarti skrip Pasca-Penerapan akan dieksekusi dengan semua pemicu diaktifkan kembali - person gsubiran; 30.06.2020
comment
Saya perlu beberapa kali mencoba untuk mencari tahu, tetapi baris perintah tidak menyukai spasi di sekitar = . Saya harus menggunakan: /p:DisableAndReenableDdlTriggers=False - person JoeLeBaron; 20.11.2020