Bagikan melalui


Mengedit skrip SQLCMD dengan Editor Kueri

Gunakan editor kueri di SQL Server Management Studio (SSMS) untuk menulis dan mengedit kueri sebagai skrip SQLCMD. Anda dapat menggunakan skrip SQLCMD untuk memproses perintah sistem Windows dan pernyataan Transact-SQL dalam skrip yang sama.

Mengaktifkan mode SQLCMD

Untuk menggunakan editor kueri untuk menulis atau mengedit skrip SQLCMD, Anda harus mengaktifkan mode pembuatan skrip SQLCMD. Mode SQLCMD tidak diaktifkan secara default. Anda dapat mengaktifkan mode pembuatan skrip dengan memilih ikon Mode SQLCMD di toolbar, atau dengan memilih Mode SQLCMD dari menu Kueri .

Nota

Saat Anda mengaktifkan mode SQLCMD, IntelliSense dan debugger Transact-SQL dinonaktifkan di editor kueri.

Skrip SQLCMD di editor kueri dapat menggunakan fitur yang sama dengan yang digunakan semua skrip Transact-SQL. Fitur-fitur ini meliputi:

  • Pengodean warna
  • Mengeksekusi skrip
  • Kontrol sumber
  • Menganalisis kode skrip
  • Rencana Tayang

Mengaktifkan pembuatan skrip SQLCMD di Editor Kueri

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

Mengalihkan jendela editor kueri ke mode SQLCMD

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

  2. Pada menu Kueri, pilih Mode SQLCMD.

    Pernyataan SQLCMD dijalankan dalam konteks editor kueri.

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

  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 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Penting

Saat Anda menjalankan sqlcmd dari baris perintah, sqlcmd mengizinkan interaksi penuh dengan sistem operasi. Saat Anda menggunakan editor kueri dalam Mode SQLCMD, berhati-hatilah untuk tidak menjalankan pernyataan interaktif. Editor kueri tidak dapat merespons permintaan sistem operasi. Untuk informasi selengkapnya tentang cara menjalankan SQLCMD dari baris perintah, lihat utilitas 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.

  • Anda dapat menggunakan komentar dan spasi kosong di depan perintah SQLCMD.

  • Perintah SQLCMD dalam karakter komentar tidak dijalankan.

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

  • Awali perintah sistem operasi dengan dua tanda seru (!!). Perintah dengan dua tanda seru tersebut menyebabkan pernyataan yang mengikuti tanda seru tersebut dieksekusi menggunakan pemroses perintah cmd.exe. Teks setelah !! diteruskan sebagai parameter ke cmd.exe, sehingga baris perintah akhir dijalankan sebagai: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

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

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

  • Editor kueri mendukung variabel dan variabel lingkungan yang Anda tentukan sebagai bagian dari skrip SQLCMD, tetapi tidak mendukung variabel SQLCMD atau osql bawaan. SSMS memproses variabel SQLCMD dengan peka terhadap huruf besar/kecil. Misalnya, PRINT '$(COMPUTERNAME)' menghasilkan hasil yang benar, tetapi PRINT '$(ComputerName)' mengembalikan kesalahan.

Perhatian

SSMS menggunakan SqlClient pustaka .NET untuk eksekusi dalam mode reguler dan SQLCMD. Saat Anda menjalankan kueri dari baris perintah, sqlcmd menggunakan penyedia OLE DB. Karena opsi default yang berbeda dapat berlaku, Anda mungkin melihat perilaku yang berbeda saat menjalankan kueri yang sama dalam mode SQLCMD di dalam SSMS, dibandingkan dengan mode SQLCMD dalam utilitas sqlcmd.

Sintaks SQLCMD yang didukung

Editor kueri 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]] 1
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout 2
  • :out <filename>|stderr|stdout 2

1 Untuk informasi selengkapnya tentang :connect perintah, lihat Perintah di utilitas sqlcmd.

2 Editor kueri mengirim output ke tab Pesan untuk stderr dan stdout.

Editor kueri tidak mendukung perintah SQLCMD yang tidak disertakan dalam daftar sebelumnya. Saat Anda menjalankan skrip yang berisi kata kunci SQLCMD yang tidak didukung, editor kueri mengabaikan perintah. Untuk setiap kata kunci yang tidak didukung, editor kueri mengirimkan pesan berikut ke tujuan:

Ignoring command <ignored_command>

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. Selain itu, karena editor kueri tidak dapat merespons permintaan sistem operasi, Anda harus berhati-hati untuk tidak menjalankan pernyataan interaktif.

Pengkodan warna dalam skrip SQLCMD

Saat Anda mengaktifkan pembuatan skrip SQLCMD, skrip diberi kode warna. Pengkodian warna untuk kata kunci Transact-SQL tetap sama. Perintah SQLCMD muncul dengan latar belakang berbayang.

Examples

Contoh berikut menggunakan pernyataan SQLCMD untuk membuat file output bernama testoutput.txt. Ini menjalankan dua pernyataan Transact-SQL SELECT dan satu perintah sistem operasi yang 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