Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Database SQL di Microsoft Fabric
Utilitas sqlcmd menerima pernyataan Transact-SQL, prosedur sistem, dan file skrip.
Note
Untuk mengetahui varian dan versi sqlcmd mana yang diinstal pada sistem Anda, lihat Memeriksa versi utilitas sqlcmd yang diinstal. Untuk informasi tentang cara mendapatkan sqlcmd, lihat Mengunduh dan menginstal utilitas sqlcmd.
Selain pernyataan Transact-SQL dalam sqlcmd, gunakan perintah berikut:
GO [ <count> ]:List[:]RESET:Error-
[:]ED1 :Out[:]!!:Perftrace[:]QUIT:Connect[:]EXIT:On Error:r:Help-
:ServerList1 -
:XML [ ON | OFF ]1 :Setvar:Listvar
1 Tidak didukung di Linux atau macOS.
Ingatlah poin-poin berikut saat Anda menggunakan perintah sqlcmd :
Semua perintah sqlcmd , kecuali
GO, harus dimulai dengan titik dua (:).Important
Untuk mempertahankan kompatibilitas mundur dengan skrip osql yang ada, beberapa perintah berfungsi tanpa titik dua (ditunjukkan oleh
[:]).sqlcmd mengenali perintah hanya jika muncul di awal baris.
Semua perintah sqlcmd tidak peka huruf besar/kecil.
Setiap perintah harus berada di baris terpisah. Anda tidak dapat mengikuti perintah dengan pernyataan Transact-SQL atau perintah lain.
Perintah segera dijalankan. Mereka tidak dimasukkan ke dalam buffer eksekusi seperti pernyataan Transact-SQL.
Perintah pengeditan
[:]ED
Memulai editor teks. Gunakan editor ini untuk mengedit batch Transact-SQL saat ini, atau batch eksekusi terakhir. Untuk mengedit batch eksekusi terakhir, ketik ED perintah segera setelah batch terakhir selesai dieksekusi.
Variabel SQLCMDEDITOR lingkungan mendefinisikan editor teks. Editor defaultnya adalah Edit. Untuk mengubah editor, atur SQLCMDEDITOR variabel lingkungan. Misalnya, untuk mengatur editor ke Microsoft Notepad, ketik perintah berikut:
SET SQLCMDEDITOR=notepad
[:]RESET
Menghapus cache pernyataan.
:List
Mencetak isi cache pernyataan.
Variables
:Setvar <var> [ "nilai" ]
Menentukan variabel pembuatan skrip sqlcmd. Variabel pembuatan skrip memiliki format berikut: $(VARNAME).
Nama variabel tidak sensitif terhadap besar kecilnya huruf.
Variabel pembuatan skrip dapat diatur dengan cara berikut:
- Secara implisit menggunakan opsi baris perintah. Misalnya,
-lopsi mengaturSQLCMDLOGINTIMEOUTvariabel sqlcmd . - Secara eksplisit dengan menggunakan perintah
:Setvar. - Menentukan variabel lingkungan sebelum Anda menjalankan sqlcmd.
Note
Opsi -X mencegah variabel lingkungan diteruskan ke sqlcmd.
Jika variabel yang ditentukan dengan menggunakan :Setvar dan variabel lingkungan memiliki nama yang sama, variabel yang ditentukan dengan menggunakan :Setvar lebih diutamakan.
Nama variabel tidak boleh berisi karakter spasi kosong.
Nama variabel tidak boleh memiliki formulir yang sama dengan ekspresi variabel, seperti $(var).
Jika nilai string variabel pembuatan skrip berisi spasi kosong, sertakan nilai dalam tanda kutip. Jika nilai untuk variabel skrip tidak ditentukan, variabel pembuatan skrip akan dihilangkan.
:Listvar
Menampilkan daftar variabel pembuatan skrip yang saat ini diatur.
Note
Hanya variabel pembuatan skrip yang diatur oleh sqlcmd, dan variabel yang diatur menggunakan :Setvar perintah, yang ditampilkan.
Perintah output
:Kesalahan<nama file> | STDERR | STDOUT
Alihkan semua output kesalahan ke file yang ditentukan oleh nama file, ke stderr, atau ke stdout. Perintah :Error dapat muncul beberapa kali dalam skrip. Secara default, output kesalahan masuk ke stderr.
filename
Membuat dan membuka file yang menerima output. File yang ada dipotong menjadi nol byte. Jika file tidak tersedia karena izin atau alasan lain, output tidak dialihkan, dan tujuan terakhir yang ditentukan atau default menerima output kesalahan.
STDERR
Mengalihkan output kesalahan ke saluran
stderr. Jika output dialihkan, target tempat aliran dialihkan menerima output kesalahan.STDOUT
Mengalihkan output kesalahan ke saluran
stdout. Jika output dialihkan, target tempat aliran dialihkan menerima output kesalahan.
:Keluar <namafile> | STDERR | STDOUT
Membuat dan mengalihkan semua hasil kueri ke file yang ditentukan oleh nama file, ke stderr, atau ke stdout. Secara default, output masuk ke stdout. Jika file sudah ada, file dipotong menjadi nol byte. Perintah :Out dapat muncul beberapa kali dalam skrip.
:Perftrace <nama file> | STDERR | STDOUT
Membuat dan mengalihkan semua informasi pelacakan performa ke file yang ditentukan oleh nama file, ke stderr, atau ke stdout. Secara default, output jejak performa masuk ke stdout. File yang ada dipotong menjadi nol byte. Perintah :Perftrace dapat muncul beberapa kali dalam skrip.
Perintah pengendalian eksekusi
:Pada Kesalahan [ keluar | abaikan ]
Mengatur tindakan yang akan dilakukan ketika kesalahan terjadi selama eksekusi skrip atau batch.
Saat Anda menggunakan opsi , exitsqlcmd keluar dengan nilai kesalahan yang sesuai.
Saat Anda menggunakan ignore opsi , sqlcmd mengabaikan kesalahan dan terus mengeksekusi batch atau skrip. Secara default, sqlcmd mencetak pesan kesalahan.
[:]QUIT
Menyebabkan sqlcmd berhenti.
[:]EXIT [ ( pernyataan ) ]
Gunakan hasil SELECT pernyataan sebagai nilai pengembalian dari sqlcmd. Jika numerik, kolom pertama dari baris hasil terakhir dikonversi menjadi bilangan bulat 4-byte (panjang). MS-DOS, Linux, dan macOS meneruskan byte rendah ke proses induk atau tingkat kesalahan sistem operasi. Windows 2000 dan versi yang lebih baru meneruskan bilangan bulat 4-byte secara keseluruhan. Sintaksnya adalah :EXIT(query).
Contohnya:
:EXIT(SELECT @@ROWCOUNT)
Anda juga dapat menyertakan :EXIT parameter sebagai bagian dari file batch. Misalnya, pada prompt perintah, ketik:
sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"
Utilitas sqlcmd mengirimkan semuanya antara tanda kurung (()) ke server. Jika prosedur tersimpan sistem memilih satu set dan mengembalikan nilai, hanya pemilihan yang dikembalikan. Pernyataan :EXIT() tanpa apa pun antara tanda kurung menjalankan semua yang ada sebelumnya di dalam sebuah batch, dan kemudian keluar tanpa mengembalikan nilai.
Saat Anda menentukan kueri yang salah, sqlcmd keluar tanpa nilai yang dikembalikan.
Berikut adalah daftar format EXIT:
:EXITTidak menjalankan batch, lalu langsung keluar dan tidak mengembalikan nilai.
:EXIT( )Menjalankan batch, kemudian keluar dan tidak mengembalikan nilai.
:EXIT(query)Menjalankan batch yang menyertakan kueri, lalu keluar setelah mengembalikan hasil kueri.
Jika Anda menggunakan RAISERROR dalam skrip sqlcmd , dan menaikkan status 127, sqlcmd berhenti, dan mengembalikan ID pesan kembali ke klien. Contohnya:
RAISERROR(50001, 10, 127)
Kesalahan ini menyebabkan skrip sqlcmd berakhir dan mengembalikan ID pesan 50001 ke klien.
Nilai pengembalian -1 ke -99 dicadangkan oleh SQL Server, dan sqlcmd mendefinisikan nilai pengembalian tambahan.
| Mengembalikan nilai | Description |
|---|---|
-100 |
Terjadi kesalahan sebelum memilih nilai pengembalian. |
-101 |
Tidak ada baris yang ditemukan saat memilih nilai pengembalian. |
-102 |
Terjadi kesalahan konversi saat memilih nilai pengembalian. |
GO [hitung]
GO menandakan akhir batch dan eksekusi pernyataan Transact-SQL yang di-cache. Batch dijalankan beberapa kali secara terpisah. Anda tidak dapat mendeklarasikan variabel lebih dari sekali dalam satu batch.
Perintah lain-lain
:r <nama file>
Mengurai pernyataan Transact-SQL tambahan dan perintah sqlcmd dari file yang ditentukan oleh nama file ke dalam cache pernyataan. sqlcmd membaca nama file relatif terhadap direktori startup.
Jika file berisi pernyataan Transact-SQL yang tidak diikuti oleh GO, Anda harus memasukkan GO pada baris yang mengikuti :r.
sqlcmd membaca dan menjalankan file setelah menemukan pemisah batch. Anda dapat mengeluarkan beberapa :r perintah. File dapat menyertakan perintah sqlcmd apa pun, termasuk penanda akhir batch GO.
Note
Jumlah baris yang ditampilkan dalam mode interaktif meningkat satu per satu untuk setiap :r perintah yang ditemui. Perintah :r muncul dalam output perintah daftar.
:ServerList
Mencantumkan server yang dikonfigurasi secara lokal dan nama server yang disiarkan di jaringan.
:Sambungkan server_name[\instance_name] [-l timeout] [-U user_name [-P password]] [-N[s|m|o]] [-F hostname_in_certificate]
Menghubungkan ke sebuah instance dari SQL Server. Selain itu, mengakhiri koneksi yang sedang berlangsung.
Important
Perintah :Connect tidak bertindak sebagai pemisah batch implisit. Setiap pernyataan Transact-SQL yang di-buffer dalam batch saat ini tidak dijalankan hingga perintah GO dikeluarkan. Jika Anda menggunakan beberapa :Connect perintah tanpa mengintervensi GO pernyataan, semua pernyataan buffer berjalan terhadap server terakhir yang terhubung, dan bukan terhadap setiap server satu per satu.
Opsi enkripsi (
-N[s|m|o]):Gunakan opsi ini untuk meminta koneksi terenkripsi. Jika Anda tidak menyertakan
-N,-Nm(untukmandatory) adalah default. Opsi ini merupakan perubahan signifikan dari SQL Server 2022 (16.x) dan versi sebelumnya, di mana-No(untukoptional) adalah bawaan.Value Description -NsKetat -Nm(standar)Mandatory -NoFakultatif Nama host dalam sertifikat (
-F hostname_in_certificate)Menentukan Nama Umum (CN) atau Nama Alternatif Subjek (SAN) yang berbeda dan diharapkan dalam sertifikat server yang akan digunakan selama validasi sertifikat server. Tanpa opsi ini, validasi sertifikat memastikan bahwa CN atau SAN dalam sertifikat cocok dengan nama server yang Anda sambungkan. Parameter ini dapat diisi ketika nama server tidak cocok dengan CN atau SAN, misalnya, saat menggunakan alias DNS.
Opsi batas waktu:
Value Behavior 0Tunggu selamanya n>0Tunggu n detik Variabel
SQLCMDSERVERpembuatan skrip mencerminkan koneksi aktif saat ini.Jika batas waktu tidak ditentukan, nilai
SQLCMDLOGINTIMEOUTvariabel adalah default.
Jika Anda hanya menentukan user_name (baik sebagai opsi atau sebagai variabel lingkungan), sqlcmd meminta Anda untuk memasukkan kata sandi. Pengguna tidak diminta jika SQLCMDUSER variabel lingkungan atau SQLCMDPASSWORD diatur. Jika Anda tidak menyediakan opsi atau variabel lingkungan, mode Autentikasi Windows digunakan untuk masuk. Misalnya, untuk menyambungkan ke instans, instance1, dari SQL Server, myserver, dengan menggunakan keamanan terintegrasi, Anda akan menggunakan perintah berikut:
:connect myserver\instance1
Untuk menyambungkan ke instans default myserver menggunakan variabel scripting, gunakan pengaturan berikut:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:]!! command
Menjalankan perintah sistem operasi. Untuk menjalankan perintah sistem operasi, mulai baris dengan dua tanda seru (!!) diikuti oleh perintah sistem operasi. Contohnya:
:!! dir
Note
Perintah berjalan di komputer tempat sqlcmd berjalan.
:XML [ ON | NONAKTIF ]
Untuk informasi selengkapnya, lihat Format Output XML dan Format Output JSON di artikel ini.
:Help
Mencantumkan perintah sqlcmd , bersama dengan deskripsi singkat dari setiap perintah.
nama berkas sqlcmd
Tentukan file input sqlcmd dengan menggunakan -i opsi atau :r perintah . Tentukan file output dengan menggunakan opsi -o atau perintah :Error, :Out, dan :Perftrace. Saat Anda bekerja dengan file-file ini, gunakan panduan berikut:
Gunakan nilai nama file terpisah untuk
:Error,:Out, dan:Perftrace. Jika Anda menggunakan nama file yang sama, perintah mungkin saling mencampur input.Jika Anda memanggil file input yang terletak di server jarak jauh dari sqlcmd di komputer lokal, dan file berisi jalur file drive seperti
:Out c:\OutputFile.txt, sqlcmd membuat file output di komputer lokal dan bukan di server jarak jauh.Jalur file yang valid meliputi:
C:\<filename>,\\<Server>\<Share$>\<filename>, dan"C:\Some Folder\<file name>". Jika ada spasi di jalur, gunakan tanda kutip.Setiap sesi sqlcmd baru akan menimpa file yang sudah ada dengan nama yang sama.
Pesan informasi
sqlcmd mencetak pesan informasi apa pun yang dikirim server. Dalam contoh berikut, setelah sqlcmd menjalankan pernyataan Transact-SQL, sqlcmd mencetak pesan informasi.
Mulai sqlcmd. Ketik kueri di prompt perintah sqlcmd:
USE AdventureWorks2025;
GO
Saat Anda menekan Enter, sqlcmd mencetak pesan informasi berikut:
Changed database context to 'AdventureWorks2025'.
Format output dari kueri Transact-SQL
sqlcmd terlebih dahulu mencetak header kolom yang berisi nama kolom yang ditentukan dalam daftar pemilihan. Nama kolom dipisahkan dengan menggunakan SQLCMDCOLSEP karakter . Secara default, pemisah kolom ini adalah spasi. Jika nama kolom lebih pendek dari lebar kolom, sqlcmd akan menambahkan spasi pada output hingga memenuhi lebar kolom.
sqlcmd mencetak garis pemisah yang merupakan serangkaian karakter tanda hubung. Output berikut menunjukkan contoh.
Mulai sqlcmd. Ketik kueri di prompt perintah sqlcmd:
USE AdventureWorks2025;
SELECT TOP (2) BusinessEntityID,
FirstName,
LastName
FROM Person.Person;
GO
Saat Anda menekan Enter, sqlcmd mengembalikan tataan hasil berikut.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
BusinessEntityID Meskipun lebar kolom hanya empat karakter, kolom diperluas untuk mengakomodasi nama kolom yang lebih panjang. Secara default, sqlcmd mengakhiri output pada 80 karakter. Anda dapat mengubah lebar ini dengan menggunakan -w opsi atau dengan mengatur SQLCMDCOLWIDTH variabel pembuatan skrip.
Format keluaran XML
Output XML yang merupakan hasil dari klausul FOR XML adalah output yang tidak diformat, dalam aliran yang berkelanjutan.
Saat Anda mengharapkan output XML, gunakan perintah berikut: :XML ON.
Note
sqlcmd mengembalikan pesan kesalahan dalam format biasa. Pesan kesalahan juga diproduksi dalam aliran teks XML dalam format XML. Dengan menggunakan :XML ON, sqlcmd tidak menampilkan pesan informasi.
Untuk mengatur mode XML ke nonaktif, gunakan perintah berikut: :XML OFF.
Perintah GO tidak boleh muncul sebelum :XML OFF perintah dikeluarkan, karena :XML OFF perintah mengalihkan sqlcmd kembali ke output berorientasi baris.
Data XML (dialirkan) dan data himpunan baris tidak dapat dicampur. Jika tidak mengeluarkan perintah :XML ON sebelum pernyataan Transact-SQL yang menghasilkan aliran XML dijalankan, outputnya akan acak.
:XML ON Setelah perintah dikeluarkan, Anda tidak dapat menjalankan pernyataan Transact-SQL yang menghasilkan kumpulan baris reguler.
Note
Perintah :XML tidak mendukung pernyataan SET STATISTICS XML.
Format JSON output
Saat Anda mengharapkan output JSON, gunakan perintah berikut: :XML ON. Jika tidak, output mencakup nama kolom dan teks JSON. Output ini bukan JSON yang valid.
Untuk mengatur mode XML ke nonaktif, gunakan perintah berikut: :XML OFF.
Untuk informasi selengkapnya, lihat Format Output XML di artikel ini.
Menggunakan autentikasi Microsoft Entra
Contoh yang menggunakan autentikasi Microsoft Entra:
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30