Mengedit Skrip SQLCMD dengan Editor Kueri

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Menggunakan Editor Kueri Mesin Database di SQL Server Management Studio, Anda dapat menulis dan mengedit kueri sebagai skrip SQLCMD. Anda menggunakan skrip SQLCMD saat memproses perintah Sistem Windows dan pernyataan Transact-SQL dalam skrip yang sama.

SQLCMD Mode

Untuk menggunakan Editor Kueri Mesin Database untuk menulis atau mengedit skrip SQLCMD, Anda harus mengaktifkan mode pembuatan skrip SQLCMD. Secara default, mode SQLCMD tidak diizinkan di Editor Kueri. Anda dapat mengaktifkan mode pembuatan skrip dengan memilih ikon Mode SQLCMD di toolbar atau dengan memilih Mode SQLCMD dari menu Kueri .

Catatan

Mengaktifkan mode SQLCMD menonaktifkan IntelliSense dan debugger Transact-SQL di Editor Kueri Mesin Database.

Skrip SQLCMD di Editor Kueri dapat menggunakan fitur yang sama dengan yang digunakan semua skrip Transact-SQL. Fitur-fitur ini mencakup hal-hal berikut:

  • Pengodean warna
  • Mengeksekusi skrip
  • Kontrol sumber
  • Mengurai skrip
  • Showplan

Mengaktifkan pembuatan skrip SQLCMD di Editor Kueri

Untuk mengaktifkan pembuatan skrip SQLCMD untuk jendela Editor Kueri Mesin Database aktif, gunakan prosedur berikut.

Mengalihkan jendela editor kueri mesin database ke mode SQLCMD

  1. Di Object Explorer, klik kanan server lalu pilih Kueri Baru, untuk membuka jendela Editor Kueri Mesin Database baru.

  2. Pada menu Kueri, pilih Mode SQLCMD.

    Editor Kueri menjalankan pernyataan SQLCMD dalam konteks Editor Kueri.

  3. Pada toolbar Editor SQL, di daftar Database yang Tersedia, pilih AdventureWorks2022.

  4. Di jendela Editor Kueri, ketik pernyataan Transact-SQL berikut dan !!DIR pernyataan SQLCMD:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Tekan F5 untuk menjalankan bagian pernyataan Transact-SQL dan MS-DOS campuran.

    Perhatikan dua panel hasil SQL dari pernyataan pertama dan ketiga.

  6. Di panel Hasil , pilih tab Pesan untuk melihat pesan dari ketiga pernyataan:

    • (6 baris terpengaruh)
    • <Informasi direktori>
    • (4 baris terpengaruh)

Penting

Ketika dijalankan dari baris perintah, utilitas sqlcmd mengizinkan interaksi penuh dengan sistem operasi. Saat Anda menggunakan Editor Kueri dalam Mode SQLCMD, Anda harus berhati-hati untuk tidak menjalankan pernyataan interaktif. Editor Kueri tidak dapat merespons permintaan sistem operasi.

Untuk informasi selengkapnya tentang cara menjalankan SQLCMD, lihat utilitas sqlcmd, atau ikuti tutorial SQLCMD.

Aktifkan pembuatan skrip SQLCMD secara default

Untuk mengaktifkan pembuatan skrip SQLCMD secara default, pada menu Alat , pilih Opsi, perluas Eksekusi Kueri, dan SQL Server, pilih halaman Umum lalu centang kotak Secara default buka kueri baru dalam Mode SQLCMD.

Menulis dan mengedit skrip SQLCMD

Setelah mengaktifkan mode pembuatan skrip, Anda dapat menulis perintah SQLCMD dan pernyataan Transact-SQL. Aturan berikut ini akan berlaku:

  • Perintah SQLCMD harus menjadi pernyataan pertama pada baris.

  • Hanya satu perintah SQLCMD yang diizinkan pada setiap baris.

  • Perintah SQLCMD dapat didahului oleh komentar atau spasi kosong.

  • Perintah SQLCMD dalam karakter komentar tidak dijalankan.

  • Karakter komentar baris tunggal adalah dua tanda hubung (--) dan harus muncul di awal baris.

  • Perintah sistem operasi harus didahului oleh dua poin tanda seru (!!). Perintah tanda seru ganda menyebabkan pernyataan yang mengikuti tanda seru dijalankan menggunakan cmd.exe prosesor perintah. Teks setelah !! diteruskan sebagai parameter ke cmd.exe, sehingga baris perintah akhir akan dijalankan sebagai: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

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

  • Perintah GO dapat digunakan tanpa preface atau didahului oleh !!:

  • Editor Kueri Mesin Database mendukung variabel dan variabel lingkungan yang didefinisikan sebagai bagian dari skrip SQLCMD, tetapi tidak mendukung variabel SQLCMD atau osql bawaan. Pemrosesan SQLCMD oleh SQL Server Management Studio peka huruf besar/kecil untuk variabel. Misalnya, PRINT '$(COMPUTERNAME)' menghasilkan hasil yang benar, tetapi PRINT '$(ComputerName)' mengembalikan kesalahan.

Perhatian

SQL Server Management Studio menggunakan Microsoft .NET FrameworkSqlClient untuk eksekusi dalam mode reguler dan SQLCMD. Saat dijalankan dari baris perintah, SQLCMD menggunakan penyedia OLE DB. Karena opsi default yang berbeda mungkin berlaku, dimungkinkan untuk mendapatkan perilaku yang berbeda saat menjalankan kueri yang sama dalam Mode SQL Server Management Studio SQLCMD dan dalam utilitas SQLCMD.

Sintaks SQLCMD yang didukung

Editor Kueri Mesin Database mendukung kata kunci skrip SQLCMD berikut:

  • [!!:]GO[count]
  • !! <command>
  • :exit(statement)
  • :Quit
  • :r <filename>
  • :setvar <var> <value>
  • :connect server[\instance] [-l login_timeout] [-U user [-P password]]
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout
  • :out <filename>|stderr|stdout

Catatan

Kirim output ke tab pesan untuk :error dan :out, stderr dan stdout.

Perintah SQLCMD yang tidak tercantum di atas tidak didukung di Editor Kueri. Saat skrip yang berisi kata kunci SQLCMD tidak didukung dijalankan, Editor Kueri mengirimkan pesan "Mengabaikan perintah <>yang diabaikan" ke tujuan untuk setiap kata kunci yang tidak didukung. Skrip berhasil dijalankan, tetapi perintah yang tidak didukung diabaikan.

Perhatian

Karena Anda tidak memulai SQLCMD dari baris perintah, ada beberapa batasan saat menjalankan Editor Kueri dalam Mode SQLCMD. Anda tidak dapat meneruskan parameter baris perintah seperti variabel, dan, karena Editor Kueri tidak dapat merespons permintaan sistem operasi, Anda harus berhati-hati untuk tidak menjalankan pernyataan interaktif.

Pengkodan warna dalam skrip SQLCMD

Dengan mengaktifkan pembuatan skrip SQLCMD, skrip diberi kode warna. Pengkodian warna untuk kata kunci Transact-SQL tetap sama. Perintah SQLCMD disajikan dengan latar belakang berteduh.

Contoh

Contoh berikut menggunakan pernyataan SQLCMD untuk membuat file output yang disebut testoutput.txt, menjalankan dua pernyataan Transact-SQL SELECT bersama dengan satu perintah sistem operasi (untuk mencetak direktori saat ini). File yang dihasilkan berisi output pesan dari DIR pernyataan dan output hasil dari pernyataan Transact-SQL.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO

Langkah berikutnya