it-swarm.asia

Bisakah saya mengaktifkan mode SQLCMD dari dalam skrip?

Apakah ada sesuatu seperti arahan yang dapat saya gunakan dalam skrip untuk memaksa SSMS untuk mengaktifkan/menonaktifkan mode SQLCMD?

17
bernd_k

Seperti yang telah dikatakan, tidak ada jalan.

Namun, satu hal yang kami lakukan adalah memasukkan pemeriksaan cepat di header skrip kami, untuk menentukan apakah mode SQLCMD aktif (dan menghentikan skrip jika tidak):

:setvar DatabaseName "MyDatabase"
GO
IF ('$(DatabaseName)' = '$' + '(DatabaseName)')
    RAISERROR ('This script must be run in SQLCMD mode. Disconnecting.', 20, 1) WITH LOG
GO
-- The below is only run if SQLCMD is on, or the user lacks permission to raise fatal errors
IF @@ERROR != 0
    SET NOEXEC ON
GO

PRINT 'You will not see this unless SQLCMD mode is on'
-- Rest of script goes here

GO
SET NOEXEC OFF
GO

Ada alasan Severity 20 digunakan, itu cenderung untuk membunuh koneksi segera, mencegah kode skrip lagi dari berjalan, bahkan jika GO batch terminators nanti dalam skrip.

Severities 20-24 :

Tunjukkan masalah sistem dan kesalahan fatal, yang berarti bahwa tugas Database Engine yang mengeksekusi pernyataan atau batch tidak lagi berjalan. Tugas mencatat informasi tentang apa yang terjadi dan kemudian berakhir. Dalam kebanyakan kasus, koneksi aplikasi ke instance dari Mesin Database juga dapat berakhir . Jika ini terjadi, tergantung pada masalahnya, aplikasi mungkin tidak dapat terhubung kembali.

Pesan kesalahan dalam rentang ini dapat mempengaruhi semua proses mengakses data dalam database yang sama dan dapat menunjukkan bahwa database atau objek rusak. Pesan kesalahan dengan tingkat keparahan dari 19 hingga 24 ditulis ke log kesalahan.

17
Dan Nolan

Tidak.

Tetapi Anda selalu dapat berjalan dalam mode SQLCMD dan memiliki T-SQL di dalamnya

Untuk membuat perbedaan yang jelas antara perintah SQLCMD dan Transact-SQL, semua perintah SQLCMD, harus diawali dengan tanda titik dua (:).

7
gbn