Inilah cara saya melakukannya:
PRINT 'This runs'
go
SELECT 0/0, 'This causes an error'
go
if (@@error <> 0)
Begin
set nocount on
set noexec on
End
GO
PRINT 'This should not run'
go
set noexec off
set nocount off
GO
Mode "noexec" menempatkan SSMS adalah keadaan di mana ia hanya mengkompilasi T-SQL dan tidak benar-benar menjalankannya. Ini mirip dengan menekan tombol toolbar Parse (Ctrl+F5) secara tidak sengaja, bukan Execute (F5).
Jangan lupa untuk mematikan kembali noexec di akhir skrip Anda. Jika tidak, pengguna akan dibingungkan dengan "Perintah berhasil diselesaikan" permanen. pesan.
Saya menggunakan cek terhadap @@error di batch berikutnya alih-alih menggunakan blok TRY CATCH. Menggunakan @@error di batch berikutnya akan menangkap kesalahan kompilasi, seperti "tabel tidak ada".
Selain mode noexec, saya juga mengaktifkan mode nocount. Dengan mode noexec aktif dan nocount nonaktif, kueri Anda masih akan melaporkan pesan "(0 baris terpengaruh)". Pesan selalu melaporkan nol baris, karena Anda berada dalam mode noexec. Namun, mengaktifkan nocount akan menyembunyikan pesan-pesan ini.
Perhatikan juga bahwa jika menjalankan SQL Server 2005, perintah yang Anda lewati mungkin masih memberikan pesan kesalahan jika merujuk pada tabel yang tidak ada dan perintah jika perintah pertama dalam kumpulan. Memaksa perintah menjadi perintah kedua dalam kumpulan dengan pernyataan Cetak palsu dapat menekan hal ini. Lihat Bug MS #569263 untuk lebih jelasnya.