Utilitas sqlcmd
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Utilitas sqlcmd memungkinkan Anda memasukkan pernyataan Transact-SQL, prosedur sistem, dan file skrip melalui berbagai mode:
- Pada prompt perintah.
- Dalam Editor Kueri dalam mode SQLCMD.
- Dalam file skrip Windows.
- Dalam langkah pekerjaan sistem operasi (
cmd.exe
) dari pekerjaan SQL Server Agent.
Catatan
Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.
Cari tahu versi mana yang telah Anda instal
Ada dua versi sqlcmd:
go-mssqldb
Sqlcmd berbasis, terkadang ditata sebagai go-sqlcmd. Versi ini adalah alat mandiri yang dapat Anda unduh secara independen dari SQL Server.Sqlcmd berbasis ODBC, tersedia dengan SQL Server atau Utilitas Baris Perintah Microsoft, dan bagian
mssql-tools
dari paket di Linux.
Untuk menentukan versi yang telah Anda instal, jalankan pernyataan berikut di baris perintah:
sqlcmd "-?"
sqlcmd "-?"
sqlcmd -?
Jika Anda menggunakan versi baru sqlcmd (Go), outputnya mirip dengan contoh berikut:
Version: 1.3.1
Memeriksa versi
Anda dapat menggunakan sqlcmd --version
untuk menentukan versi mana yang diinstal. Anda harus menginstal setidaknya versi 1.0.0.
Penting
Menginstal sqlcmd (Go) melalui manajer paket akan menggantikan sqlcmd (ODBC) dengan sqlcmd (Go) di jalur lingkungan Anda. Setiap sesi baris perintah saat ini perlu ditutup dan dibuka kembali agar ini berlaku. sqlcmd (ODBC) tidak akan dihapus dan masih dapat digunakan dengan menentukan jalur lengkap ke executable. Anda juga dapat memperbarui variabel Anda PATH
untuk menunjukkan mana yang akan diutamakan. Untuk melakukannya di Windows 11, buka Pengaturan sistem dan buka Tentang > pengaturan sistem Tingkat Lanjut. Saat Properti Sistem terbuka, pilih tombol Variabel Lingkungan. Di bagian bawah, di bawah Variabel sistem, pilih Jalur lalu pilih Edit. Jika lokasi sqlcmd (Go) disimpan ke (C:\Program Files\sqlcmd
adalah default) tercantum sebelum C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn
, maka sqlcmd (Go) digunakan. Anda dapat membalikkan urutan untuk membuat sqlcmd (ODBC) menjadi default lagi.
Mengunduh dan menginstal sqlcmd
sqlcmd (Go) dapat diinstal lintas platform, di Microsoft Windows, macOS, dan Linux. Versi yang lebih baru dari 1.6 mungkin tidak tersedia di semua manajer paket. Belum ada perkiraan tanggal untuk ketersediaannya.
winget (Pengelola Paket Windows CLI)
Instal Klien Pengelola Paket Windows jika Anda belum memilikinya.
Jalankan perintah berikut untuk menginstal sqlcmd (Go).
winget install sqlcmd
Chocolatey
Pasang Chocolatey jika Anda belum memilikinya.
Jalankan perintah berikut untuk menginstal sqlcmd (Go).
choco install sqlcmd
Unduhan langsung
Unduh yang
-windows-amd64.zip
sesuai atau-windows-arm.zip
aset dari rilis terbaru sqlcmd (Go) dari repositori kode GitHub.sqlcmd.exe
Ekstrak file dari folder zip yang diunduh.
Sudah diinstal sebelumnya
Azure Cloud Shell
Anda dapat mencoba utilitas sqlcmd dari Azure Cloud Shell, karena telah diinstal sebelumnya secara default:
Azure Data Studio
Untuk menjalankan pernyataan SQLCMD di Azure Data Studio, pilih Aktifkan SQLCMD dari toolbar editor.
SQL Server Management Studio (SSMS)
Untuk menjalankan pernyataan SQLCMD di SQL Server Management Studio (SSMS), pilih Mode SQLCMD dari daftar dropdown Menu Kueri navigasi atas.
SSMS menggunakan Microsoft .NET Framework SqlClient
untuk eksekusi dalam mode reguler dan SQLCMD dalam Editor Kueri. Ketika sqlcmd dijalankan dari baris perintah, sqlcmd menggunakan driver ODBC. Karena opsi default yang berbeda mungkin berlaku, Anda mungkin melihat perilaku yang berbeda saat menjalankan kueri yang sama di SQLCMD Mode dan di utilitas sqlcmd .
Sintaks
Usage:
sqlcmd [flags]
sqlcmd [command]
Examples:
# Install/Create, Query, Uninstall SQL Server
sqlcmd create mssql --accept-eula --using https://aka.ms/AdventureWorksLT.bak
sqlcmd open ads
sqlcmd query "SELECT @@version"
sqlcmd delete
# View configuration information and connection strings
sqlcmd config view
sqlcmd config cs
Available Commands:
completion Generate the autocompletion script for the specified shell
config Modify sqlconfig files using subcommands like "sqlcmd config use-context mssql"
create Install/Create SQL Server, Azure SQL, and Tools
delete Uninstall/Delete the current context
help Help about any command
open Open tools (e.g ADS) for current context
query Run a query against the current context
start Start current context
stop Stop current context
Flags:
-?, --? help for backwards compatibility flags (-S, -U, -E etc.)
-h, --help help for sqlcmd
--sqlconfig string configuration file (default "/Users/<currentUser>/.sqlcmd/sqlconfig")
--verbosity int log level, error=0, warn=1, info=2, debug=3, trace=4 (default 2)
--version print version of sqlcmd
Use "sqlcmd [command] --help" for more information about a command.
Untuk informasi lebih mendalam tentang sintaks dan penggunaan sqlcmd , lihat sintaks sqlcmd ODBC.
Melanggar perubahan dari sqlcmd (ODBC)
Beberapa sakelar dan perilaku diubah dalam utilitas sqlcmd (Go). Untuk daftar terbaru bendera yang hilang untuk kompatibilitas mundur, kunjungi diskusi Prioritaskan implementasi bendera back-compat GitHub.
Dalam versi sqlcmd (Go) yang lebih lama,
-P
sakelar dihapus sementara, dan kata sandi untuk Autentikasi SQL Server hanya dapat disediakan melalui mekanisme ini:- Variabel
SQLCMDPASSWORD
lingkungan - Perintah
:CONNECT
- Ketika diminta, pengguna dapat mengetik kata sandi untuk menyelesaikan koneksi
- Variabel
-r
0
memerlukan argumen atau1
-R
sakelar dihapus.-I
sakelar dihapus. Untuk menonaktifkan perilaku pengidentifikasi yang dikutip, tambahkanSET QUOTED IDENTIFIER OFF
skrip Anda.-N
sekarang mengambil nilai string yang bisa menjadi salah satu daritrue
,false
, ataudisable
untuk menentukan pilihan enkripsi. (default
sama dengan menghilangkan parameter)- Jika
-N
dan-C
tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server. - Jika
-N
disediakan tetapi-C
tidak, sqlcmd memerlukan validasi sertifikat server.false
Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk. - Jika keduanya
-N
dan-C
disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi. - Informasi selengkapnya tentang negosiasi enkripsi klien/server dapat ditemukan di MS-TDS PRELOGIN.
- Jika
-u
File output Unicode yang dihasilkan memiliki tanda urutan Byte (BOM) Little-Endian UTF-16 yang ditulis ke dalamnya.Beberapa perilaku yang disimpan untuk mempertahankan kompatibilitas dengan
OSQL
dapat diubah, seperti perataan header kolom untuk beberapa jenis data.Semua perintah harus pas pada satu baris, bahkan
EXIT
. Mode interaktif tidak memeriksa tanda kurung terbuka atau tanda kutip untuk perintah, dan tidak meminta baris berturut-turut. Perilaku ini berbeda dengan versi ODBC, yang memungkinkan kueri dijalankan olehEXIT(query)
untuk menjangkau beberapa baris.
Koneksi dari utilitas sqlcmd (Go) terbatas pada koneksi TCP. Pipa bernama tidak didukung saat ini di go-mssqldb
driver.
Peningkatan
:Connect
sekarang memiliki parameter opsional-G
untuk memilih salah satu metode autentikasi untuk Azure SQL Database - ,SqlAuthentication
,ActiveDirectoryDefault
,ActiveDirectoryIntegrated
ActiveDirectoryServicePrincipal
,ActiveDirectoryManagedIdentity
,ActiveDirectoryPassword
. Untuk informasi selengkapnya, lihat Autentikasi Microsoft Entra. Jika-G
tidak disediakan, Keamanan terintegrasi atau autentikasi SQL Server digunakan, tergantung pada keberadaan-U
parameter nama pengguna.Parameter baris perintah baru
--driver-logging-level
memungkinkan Anda melihat jejak darigo-mssqldb
driver. Gunakan64
untuk melihat semua jejak.sqlcmd sekarang dapat mencetak hasil menggunakan format vertikal. Gunakan sakelar baris perintah baru
-F vertical
untuk mengaturnya. VariabelSQLCMDFORMAT
pembuatan skrip juga mengontrolnya.
Opsi baris perintah
Opsi terkait login
-Sebuah
Masuk ke SQL Server dengan koneksi administrator khusus (DAC). Koneksi semacam ini digunakan untuk memecahkan masalah server. Koneksi ini hanya berfungsi dengan komputer server yang mendukung DAC. Jika DAC tidak tersedia, sqlcmd menghasilkan pesan kesalahan, lalu keluar. Untuk informasi selengkapnya tentang DAC, lihat Koneksi Diagnostik untuk Administrator Database. Opsi -A
tidak didukung dengan -G
opsi . Saat menyambungkan ke Azure SQL Database menggunakan -A
, Anda harus menjadi administrator di server SQL logis. DAC tidak tersedia untuk administrator Microsoft Entra.
-C
Opsi ini digunakan oleh klien untuk mengonfigurasinya untuk secara implisit mempercayai sertifikat server tanpa validasi. Opsi ini setara dengan opsi TRUSTSERVERCERTIFICATE = true
ADO.NET .
Untuk utilitas sqlcmd (Go), kondisi berikut juga berlaku:
- Jika
-N
dan-C
tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server. - Jika
-N
disediakan tetapi-C
tidak, sqlcmd memerlukan validasi sertifikat server.false
Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk. - Jika keduanya
-N
dan-C
disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi.
-d db_name
USE <db_name>
Mengeluarkan pernyataan saat Anda memulai sqlcmd. Opsi ini mengatur variabel SQLCMDDBNAME
pembuatan skrip sqlcmd . Parameter ini menentukan database awal. Defaultnya adalah properti database default login Anda. Jika database tidak ada, pesan kesalahan dihasilkan dan sqlcmd keluar.
-D
Menginterpretasikan nama server yang disediakan sebagai -S
DSN alih-alih nama host. Untuk informasi selengkapnya, lihat Dukungan DSN di sqlcmd dan bcp di Menyambungkan dengan sqlcmd.
Catatan
Opsi -D
ini hanya tersedia di klien Linux dan macOS. Pada klien Windows, sebelumnya mengacu pada opsi sekarang usang yang telah dihapus dan diabaikan.
-l login_timeout
Menentukan jumlah detik sebelum masuk sqlcmd ke driver ODBC kehabisan waktu ketika Anda mencoba menyambungkan ke server. Opsi ini mengatur variabel SQLCMDLOGINTIMEOUT
pembuatan skrip sqlcmd . Batas waktu default untuk masuk ke sqlcmd adalah 8 detik. Saat menggunakan -G
opsi untuk menyambungkan ke Azure SQL Database atau Azure Synapse Analytics dan mengautentikasi menggunakan ID Microsoft Entra, nilai batas waktu setidaknya 30 detik disarankan. Waktu masuk habis harus berupa angka antara 0
dan 65534
. Jika nilai yang disediakan bukan numerik, atau tidak termasuk dalam rentang tersebut, sqlcmd menghasilkan pesan kesalahan. Nilai 0
menentukan batas waktu menjadi tak terbatas.
-E
Menggunakan koneksi tepercaya alih-alih menggunakan nama pengguna dan kata sandi untuk masuk ke SQL Server. Secara default, tanpa -E
ditentukan, sqlcmd menggunakan opsi koneksi tepercaya.
Opsi mengabaikan -E
kemungkinan pengaturan variabel lingkungan nama pengguna dan kata sandi seperti SQLCMDPASSWORD
. -E
Jika opsi digunakan bersama dengan -U
opsi atau -P
opsi , pesan kesalahan akan dihasilkan.
-g
Mengatur pengaturan Enkripsi Kolom ke Enabled
. Untuk informasi selengkapnya, lihat Always Encrypted. Hanya kunci master yang disimpan di Penyimpanan Sertifikat Windows yang didukung. Opsi ini -g
memerlukan setidaknya sqlcmd versi 13.1. Untuk menentukan versi Anda, jalankan sqlcmd -?
.
-G
Opsi ini digunakan oleh klien saat menyambungkan ke Azure SQL Database atau Azure Synapse Analytics untuk menentukan bahwa pengguna diautentikasi menggunakan autentikasi Microsoft Entra. Opsi ini mengatur variabel SQLCMDUSEAAD = true
pembuatan skrip sqlcmd . Opsi ini -G
memerlukan setidaknya sqlcmd versi 13.1. Untuk menentukan versi Anda, jalankan sqlcmd -?
. Untuk informasi selengkapnya, lihat Menyambungkan ke SQL Database atau Azure Synapse Analytics Dengan Menggunakan autentikasi Microsoft Entra. Opsi -A
tidak didukung dengan -G
opsi .
Opsi -G
ini hanya berlaku untuk Azure SQL Database dan Azure Synapse Analytics.
Autentikasi interaktif Microsoft Entra saat ini tidak didukung di Linux atau macOS. Autentikasi terintegrasi Microsoft Entra memerlukan Microsoft ODBC Driver 17 untuk SQL Server versi 17.6.1 atau yang lebih tinggi dan lingkungan Kerberos yang Dikonfigurasi dengan benar.
Untuk informasi selengkapnya tentang autentikasi Microsoft Entra, lihat Autentikasi Microsoft Entra di sqlcmd.
-H workstation_name
Nama stasiun kerja. Opsi ini mengatur variabel SQLCMDWORKSTATION
pembuatan skrip sqlcmd . Nama stasiun kerja tercantum dalam hostname
kolom sys.sysprocesses
tampilan katalog, dan dapat dikembalikan menggunakan prosedur sp_who
tersimpan . Jika opsi ini tidak ditentukan, defaultnya adalah nama komputer saat ini. Nama ini dapat digunakan untuk mengidentifikasi sesi sqlcmd yang berbeda.
-j
Mencetak pesan kesalahan mentah ke layar.
-K application_intent
Menyatakan jenis beban kerja aplikasi saat menyambungkan ke server. Satu-satunya nilai yang saat ini didukung adalah ReadOnly
. Jika -K
tidak ditentukan, sqlcmd tidak mendukung konektivitas ke replika sekunder dalam grup ketersediaan. Untuk informasi selengkapnya, lihat Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn).
-M multisubnet_failover
Selalu tentukan -M
saat menyambungkan ke pendengar grup ketersediaan grup ketersediaan SQL Server atau Instans Kluster Failover SQL Server. -M
menyediakan deteksi dan koneksi yang lebih cepat ke server aktif (saat ini). Jika -M
tidak ditentukan, -M
tidak aktif. Untuk informasi selengkapnya tentang Listener, Konektivitas Klien, Failover Aplikasi, Pembuatan dan Konfigurasi Grup Ketersediaan (SQL Server), Pengklusteran Failover, dan Grup Ketersediaan AlwaysOn (SQL Server), dan Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn).
-N
Opsi ini digunakan oleh klien untuk meminta koneksi terenkripsi.
Untuk utilitas -N
sqlcmd (Go), sekarang mengambil nilai string yang dapat menjadi salah satu dari true
, false
, atau disable
untuk menentukan pilihan enkripsi. (default
sama dengan menghilangkan parameter):
- Jika
-N
dan-C
tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server. - Jika
-N
disediakan tetapi-C
tidak, sqlcmd memerlukan validasi sertifikat server.false
Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk. - Jika keduanya
-N
dan-C
disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi.
Kata sandi -P
Kata sandi yang ditentukan pengguna. Kata sandi peka huruf besar/kecil. -U
Jika opsi digunakan dan -P
opsi tidak digunakan, dan SQLCMDPASSWORD
variabel lingkungan belum diatur, sqlcmd meminta kata sandi kepada pengguna. Kami tidak merekomendasikan penggunaan kata sandi null (kosong), tetapi Anda dapat menentukan kata sandi null dengan menggunakan sepasang tanda kutip ganda yang berdampingan untuk nilai parameter (""
).
Penting
Penggunaan -P
harus dianggap tidak aman. Hindari memberikan kata sandi pada baris perintah. Atau, gunakan SQLCMDPASSWORD
variabel lingkungan, atau masukkan kata sandi secara interaktif dengan menghilangkan -P
opsi .
Kami menyarankan agar Anda menggunakan kata sandi yang kuat.
Perintah kata sandi ditampilkan dengan mencetak permintaan kata sandi ke konsol, sebagai berikut: Password:
Input pengguna disembunyikan. Ini berarti bahwa tidak ada yang ditampilkan dan kursor tetap berada di posisi.
Variabel SQLCMDPASSWORD
lingkungan memungkinkan Anda mengatur kata sandi default untuk sesi saat ini. Oleh karena itu, kata sandi tidak harus dikodekan secara permanen ke dalam file batch. Contoh berikut pertama-tama SQLCMDPASSWORD
mengatur variabel pada prompt perintah lalu mengakses utilitas sqlcmd .
Pada command prompt, ketik:
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
Jika kombinasi nama pengguna dan kata sandi salah, pesan kesalahan akan dihasilkan.
Catatan
Variabel OSQLPASSWORD
lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDPASSWORD
lingkungan lebih diutamakan daripada OSQLPASSWORD
variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.
-P
Jika opsi digunakan dengan -E
opsi , pesan kesalahan akan dihasilkan.
-P
Jika opsi diikuti oleh lebih dari satu argumen, pesan kesalahan dihasilkan dan program keluar.
Kata sandi yang berisi karakter khusus dapat menghasilkan pesan kesalahan. Anda harus menghindari karakter khusus saat menggunakan -P
, atau menggunakan variabel lingkungan sebagai gantinya SQLCMDPASSWORD
.
-S [protocol:]server[\instance_name][,port]
Menentukan instans SQL Server yang akan disambungkan. Ini mengatur variabel SQLCMDSERVER
pembuatan skrip sqlcmd .
Tentukan server_name untuk menyambungkan ke instans default SQL Server di komputer server tersebut. Tentukan server_name[\instance_name] untuk menyambungkan ke instans SQL Server bernama di komputer server tersebut. Jika tidak ada komputer server yang ditentukan, sqlcmd tersambung ke instans default SQL Server di komputer lokal. Opsi ini diperlukan ketika Anda menjalankan sqlcmd dari komputer jarak jauh pada jaringan.
protokol dapat berupa tcp
(TCP/IP), lpc
(memori bersama), atau np
(pipa bernama).
Jika Anda tidak menentukan server_name[\instance_name] saat memulai sqlcmd, SQL Server akan memeriksa dan menggunakan SQLCMDSERVER
variabel lingkungan.
Catatan
Variabel OSQLSERVER
lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDSERVER
lingkungan lebih diutamakan daripada OSQLSERVER
variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.
-U login_id
Nama login atau nama pengguna database yang terkandung. Untuk pengguna database mandiri, Anda harus menyediakan opsi nama database (-d
).
Catatan
Variabel OSQLUSER
lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDUSER
lingkungan lebih diutamakan daripada OSQLUSER
variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.
Jika Anda tidak menentukan -U
opsi atau -P
opsi , sqlcmd mencoba menyambungkan dengan menggunakan mode Autentikasi Windows. Autentikasi didasarkan pada akun Windows pengguna yang menjalankan sqlcmd.
-U
Jika opsi digunakan dengan -E
opsi (dijelaskan nanti dalam artikel ini), pesan kesalahan akan dihasilkan. -U
Jika opsi diikuti oleh lebih dari satu argumen, pesan kesalahan dihasilkan dan program keluar.
-z new_password
Ubah kata sandi:
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
-Z new_password
Ubah kata sandi dan keluar:
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
Opsi input/output
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Menentukan halaman kode input dan output. Nomor codepage adalah nilai numerik yang menentukan halaman kode Windows yang diinstal.
Aturan konversi halaman kode:
Jika tidak ada halaman kode yang ditentukan, sqlcmd menggunakan halaman kode saat ini untuk file input dan output, kecuali file input adalah file Unicode, dalam hal ini tidak diperlukan konversi.
sqlcmd secara otomatis mengenali file input Unicode big-endian dan little-endian.
-u
Jika opsi telah ditentukan, outputnya selalu Unicode little-endian.Jika tidak ada file output yang ditentukan, halaman kode output adalah halaman kode konsol. Pendekatan ini memungkinkan output ditampilkan dengan benar di konsol.
Beberapa file input diasumsikan dari halaman kode yang sama. File input Unicode dan non-Unicode dapat dicampur.
Masukkan chcp
di prompt perintah untuk memverifikasi halaman kode .cmd.exe
-i input_file[,input_file2...]
Mengidentifikasi file yang berisi batch pernyataan Transact-SQL atau prosedur tersimpan. Beberapa file dapat ditentukan yang dibaca dan diproses secara berurutan. Jangan gunakan spasi apa pun di antara nama file. sqlcmd memeriksa terlebih dahulu untuk melihat apakah semua file yang ditentukan ada. Jika satu atau beberapa file tidak ada, sqlcmd akan keluar. Dan -i
-Q
/-q
opsinya saling eksklusif.
Contoh jalur:
-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"
Jalur file yang berisi spasi harus diapit dalam tanda kutip.
Opsi ini dapat digunakan lebih dari sekali:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
-o output_file
Mengidentifikasi file yang menerima output dari sqlcmd.
Jika -u
ditentukan, output_file disimpan dalam format Unicode. Jika nama file tidak valid, pesan kesalahan dibuat, dan sqlcmd keluar. sqlcmd tidak mendukung penulisan bersamaan dari beberapa proses sqlcmd ke file yang sama. Output file rusak atau salah. Opsi -f
ini juga relevan dengan format file. File ini dibuat jika tidak ada. File dengan nama yang sama dari sesi sqlcmd sebelumnya ditimpa. File yang ditentukan di sini bukan stdout
file. stdout
Jika file ditentukan, file ini tidak digunakan.
Contoh jalur:
-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"
Jalur file yang berisi spasi harus diapit dalam tanda kutip.
-r[0 | 1]
Mengalihkan output pesan kesalahan ke layar (stderr
). Jika Anda tidak menentukan parameter atau jika Anda menentukan 0
, hanya pesan kesalahan yang memiliki tingkat keparahan 11 atau lebih tinggi yang dialihkan. Jika Anda menentukan 1
, semua output pesan kesalahan termasuk PRINT
dialihkan. Opsi ini tidak berpengaruh jika Anda menggunakan -o
. Secara default, pesan dikirim ke stdout
.
Catatan
Untuk utilitas -r
sqlcmd (Go), memerlukan 0
argumen atau 1
.
R-
Berlaku untuk: ODBC sqlcmd saja.
Menyebabkan sqlcmd melokalisasi kolom numerik, mata uang, tanggal, dan waktu yang diambil dari SQL Server berdasarkan lokal klien. Secara default, kolom ini ditampilkan menggunakan pengaturan regional server.
-u
Menentukan bahwa output_file disimpan dalam format Unicode, terlepas dari format input_file.
Catatan
Untuk utilitas sqlcmd (Go), file output Unicode yang dihasilkan memiliki tanda urutan Byte (BOM) Little-Endian UTF-16 yang ditulis ke dalamnya.
Opsi eksekusi kueri
-e
Menulis skrip input ke perangkat output standar (stdout
).
I-
Berlaku untuk: ODBC sqlcmd saja.
SET QUOTED_IDENTIFIER
Mengatur opsi koneksi ke ON
. Secara default, diatur ke OFF
. Untuk informasi selengkapnya, lihat SET QUOTED_IDENTIFIER (Transact-SQL).
Catatan
Untuk menonaktifkan perilaku pengidentifikasi yang dikutip di utilitas sqlcmd (Go), tambahkan SET QUOTED IDENTIFIER OFF
dalam skrip Anda.
-q "kueri cmdline"
Menjalankan kueri saat sqlcmd dimulai, tetapi tidak keluar dari sqlcmd ketika kueri telah selesai berjalan. Kueri yang dibatasi beberapa titik koma dapat dijalankan. Gunakan tanda kutip di sekitar kueri, seperti yang diperlihatkan dalam contoh berikut.
Pada command prompt, ketik:
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Penting
Jangan gunakan terminator GO
dalam kueri.
Jika -b
ditentukan bersama dengan opsi ini, sqlcmd keluar pada kesalahan. -b
dijelaskan di tempat lain dalam artikel ini.
-Q "kueri cmdline"
Menjalankan kueri ketika sqlcmd dimulai dan kemudian segera keluar dari sqlcmd. Kueri yang dibatasi beberapa titik koma dapat dijalankan.
Gunakan tanda kutip di sekitar kueri, seperti yang diperlihatkan dalam contoh berikut.
Pada command prompt, ketik:
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Penting
Jangan gunakan terminator GO
dalam kueri.
Jika -b
ditentukan bersama dengan opsi ini, sqlcmd keluar pada kesalahan. -b
dijelaskan di tempat lain dalam artikel ini.
-t query_timeout
Menentukan jumlah detik sebelum perintah (atau pernyataan Transact-SQL) kehabisan waktu. Opsi ini mengatur variabel SQLCMDSTATTIMEOUT
pembuatan skrip sqlcmd . Jika nilai query_timeout tidak ditentukan, perintah tidak kehabisan waktu. query_timeout harus berupa angka antara 1
dan 65534
. Jika nilai yang disediakan bukan numerik atau tidak termasuk dalam rentang tersebut, sqlcmd menghasilkan pesan kesalahan.
Catatan
Nilai waktu habis aktual dapat bervariasi dari nilai query_timeout yang ditentukan selama beberapa detik.
-v var = value [ var = value... ]
Membuat variabel pembuatan skrip sqlcmd yang dapat digunakan dalam skrip sqlcmd. Sertakan nilai dalam tanda kutip jika nilai berisi spasi. Anda dapat menentukan beberapa <var>="<value>"
nilai. Jika ada kesalahan dalam salah satu nilai yang ditentukan, sqlcmd menghasilkan pesan kesalahan lalu keluar.
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
-x
Menyebabkan sqlcmd mengabaikan variabel pembuatan skrip. Parameter ini berguna ketika skrip berisi banyak INSERT
pernyataan yang mungkin berisi string yang memiliki format yang sama dengan variabel reguler, seperti $(<variable_name>)
.
Opsi format
Header -h
Menentukan jumlah baris yang akan dicetak di antara judul kolom. Defaultnya adalah mencetak judul satu kali untuk setiap set hasil kueri. Opsi ini mengatur variabel SQLCMDHEADERS
pembuatan skrip sqlcmd . Gunakan -1
untuk menentukan bahwa header tidak dicetak. Nilai apa pun yang tidak valid menyebabkan sqlcmd menghasilkan pesan kesalahan lalu keluar.
-k [1 | 2]
Menghapus semua karakter kontrol, seperti tab dan karakter baris baru dari output. Parameter ini mempertahankan pemformatan kolom saat data dikembalikan.
-k
menghapus karakter kontrol.-k1
mengganti setiap karakter kontrol dengan spasi.-k2
mengganti karakter kontrol berturut-turut dengan satu spasi.
-s col_separator
Menentukan karakter pemisah kolom. Defaultnya adalah spasi kosong. Opsi ini mengatur variabel SQLCMDCOLSEP
pembuatan skrip sqlcmd . Untuk menggunakan karakter yang memiliki arti khusus untuk sistem operasi, seperti ampersand (&
) atau titik koma (;
), sertakan karakter dalam tanda kutip ("
). Pemisah kolom dapat berupa karakter 8-bit apa pun.
-w screen_width
Menentukan lebar layar untuk output. Opsi ini mengatur variabel SQLCMDCOLWIDTH
pembuatan skrip sqlcmd . Lebar kolom harus angka yang lebih besar dari 8
dan kurang dari 65536
. Jika lebar kolom yang ditentukan tidak termasuk dalam rentang tersebut, sqlcmd menghasilkan pesan kesalahan. Lebar default adalah 80 karakter. Ketika baris output melebihi lebar kolom yang ditentukan, garis tersebut akan dibungkus ke baris berikutnya.
-W
Opsi ini menghapus spasi berikutnya dari kolom. Gunakan opsi ini bersama dengan -s
opsi saat menyiapkan data yang akan diekspor ke aplikasi lain. Tidak dapat digunakan dengan -y
opsi atau -Y
.
-y variable_length_type_display_width
Mengatur variabel SQLCMDMAXVARTYPEWIDTH
pembuatan skrip sqlcmd . Default adalah 256
. Ini membatasi jumlah karakter yang dikembalikan untuk jenis data panjang variabel besar:
- varchar(max)
- nvarchar(maks)
- varbinary(max)
- xml
- jenis data yang ditentukan pengguna (UDT)
- text
- ntext
- gambar
UDT dapat memiliki panjang tetap tergantung pada implementasinya. Jika panjang UDT panjang tetap ini lebih pendek dari display_width, nilai UDT yang dikembalikan tidak terpengaruh. Namun, jika panjangnya lebih panjang dari display_width, output dipotong.
Perhatian
-y 0
Gunakan opsi dengan sangat hati-hati, karena dapat menyebabkan masalah performa yang signifikan pada server dan jaringan, tergantung pada ukuran data yang dikembalikan.
-Y fixed_length_type_display_width
Mengatur variabel SQLCMDMAXFIXEDTYPEWIDTH
pembuatan skrip sqlcmd . Defaultnya adalah 0
(tidak terbatas). Membatasi jumlah karakter yang dikembalikan untuk jenis data berikut:
- char(n), di mana 1 <= n<= 8000
- nchar(n), di mana 1 <= n<= 4000
- varchar(n), di mana 1 <= n<= 8000
- nvarchar(n), di mana 1 <= n<= 4000
- varbinary(n), di mana 1 <= n<= 4000
- aql_variant
Opsi pelaporan kesalahan
-b
Menentukan bahwa sqlcmd keluar dan mengembalikan DOS ERRORLEVEL
nilai saat terjadi kesalahan. Nilai yang dikembalikan ke ERRORLEVEL
variabel adalah 1
ketika pesan kesalahan SQL Server memiliki tingkat keparahan yang lebih besar dari 10; jika tidak, nilai yang dikembalikan adalah 0
. -V
Jika opsi telah diatur selain -b
, sqlcmd tidak melaporkan kesalahan jika tingkat keparahan lebih rendah dari nilai yang ditetapkan menggunakan -V
. File batch prompt perintah dapat menguji nilai ERRORLEVEL
dan menangani kesalahan dengan tepat. sqlcmd tidak melaporkan kesalahan untuk tingkat keparahan 10 (pesan informasi).
Jika skrip sqlcmd berisi komentar yang salah, kesalahan sintaks, atau tidak memiliki variabel pembuatan skrip, yang ERRORLEVEL
dikembalikan adalah 1
.
-m error_level
Mengontrol pesan kesalahan mana yang dikirim ke stdout
. Pesan yang memiliki tingkat keparahan lebih besar dari atau sama dengan tingkat ini dikirim. Ketika nilai ini diatur ke -1
, semua pesan termasuk pesan informasi, dikirim. Spasi tidak diperbolehkan antara -m
dan -1
. Misalnya, -m-1
valid, dan -m -1
tidak.
Opsi ini juga mengatur variabel SQLCMDERRORLEVEL
pembuatan skrip sqlcmd . Variabel ini memiliki default .0
-V error_severity_level
Mengontrol tingkat keparahan yang digunakan untuk mengatur ERRORLEVEL
variabel. Pesan kesalahan yang memiliki tingkat keparahan lebih besar dari atau sama dengan set ERRORLEVEL
nilai ini . Nilai yang kurang dari 0 dilaporkan sebagai 0
. File Batch dan CMD dapat digunakan untuk menguji nilai ERRORLEVEL
variabel.
Opsi lain-lain
-a packet_size
Meminta paket dengan ukuran yang berbeda. Opsi ini mengatur variabel SQLCMDPACKETSIZE
pembuatan skrip sqlcmd . packet_size harus berupa nilai antara 512
dan 32767
. Default adalah 4096
. Ukuran paket yang lebih besar dapat meningkatkan performa untuk eksekusi skrip yang memiliki banyak pernyataan Transact-SQL antar GO
perintah. Anda dapat meminta ukuran paket yang lebih besar. Namun, jika permintaan ditolak, sqlcmd menggunakan default server untuk ukuran paket.
-c batch_terminator
Menentukan terminator batch. Secara default, perintah dihentikan dan dikirim ke SQL Server dengan mengetik kata GO
pada baris itu sendiri. Saat Anda mengatur ulang terminator batch, jangan gunakan kata kunci atau karakter yang dipesan Transact-SQL yang memiliki arti khusus untuk sistem operasi, bahkan jika mereka didahului oleh garis miring terbalik.
-L[c]
Mencantumkan komputer server yang dikonfigurasi secara lokal, dan nama komputer server yang disiarkan di jaringan. Parameter ini tidak dapat digunakan dalam kombinasi dengan parameter lain. Jumlah maksimum komputer server yang dapat dicantumkan adalah 3000. Jika daftar server dipotong karena ukuran buffer, pesan peringatan ditampilkan.
Catatan
Karena sifat penyiaran di jaringan, sqlcmd mungkin tidak menerima respons tepat waktu dari semua server. Oleh karena itu, daftar server yang dikembalikan dapat bervariasi untuk setiap pemanggilan opsi ini.
Jika parameter c
opsional ditentukan, output muncul tanpa Servers:
baris header, dan setiap baris server dicantumkan tanpa spasi di depannya. Presentasi ini disebut sebagai output bersih. Output bersih meningkatkan performa pemrosesan bahasa skrip.
-p[1]
Mencetak statistik performa untuk setiap tataan hasil. Tampilan berikut adalah contoh format untuk statistik performa:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
Mana:
x
= Jumlah transaksi yang diproses oleh SQL Server.t1
= Total waktu untuk semua transaksi.t2
= Waktu rata-rata untuk satu transaksi.t3
= Jumlah rata-rata transaksi per detik.
Semua waktu dalam milidetik.
Jika parameter 1
opsional ditentukan, format output statistik dalam format yang dipisahkan titik dua yang dapat diimpor dengan mudah ke spreadsheet atau diproses oleh skrip.
Jika parameter opsional adalah nilai apa pun selain 1
, kesalahan dihasilkan dan sqlcmd keluar.
-X[1]
Menonaktifkan perintah yang mungkin membahayakan keamanan sistem saat sqlcmd dijalankan dari file batch. Perintah yang dinonaktifkan masih dikenali; sqlcmd mengeluarkan pesan peringatan dan berlanjut. Jika parameter 1
opsional ditentukan, sqlcmd menghasilkan pesan kesalahan lalu keluar. Perintah berikut dinonaktifkan saat -X
opsi digunakan:
ED
!!
perintah
-X
Jika opsi ditentukan, opsi tersebut mencegah variabel lingkungan diteruskan ke sqlcmd. Ini juga mencegah skrip startup yang ditentukan dengan menggunakan SQLCMDINI
variabel scripting agar tidak dijalankan. Untuk informasi selengkapnya tentang variabel pembuatan skrip sqlcmd , lihat sqlcmd - Gunakan dengan variabel pembuatan skrip.
-?
Menampilkan versi sqlcmd dan ringkasan sintaks opsi sqlcmd .
Catatan
Di macOS, jalankan sqlcmd '-?'
(dengan tanda kutip) sebagai gantinya.
Keterangan
Opsi tidak harus digunakan dalam urutan yang diperlihatkan di bagian sintaks.
Saat beberapa hasil dikembalikan, sqlcmd mencetak baris kosong di antara setiap hasil yang diatur dalam batch. Selain itu, <x> rows affected
pesan tidak muncul ketika tidak berlaku untuk pernyataan yang dijalankan.
Untuk menggunakan sqlcmd secara interaktif, ketik sqlcmd
prompt perintah dengan satu atau beberapa opsi yang dijelaskan sebelumnya dalam artikel ini. Untuk informasi selengkapnya, lihat Menggunakan Utilitas sqlcmd
Catatan
Opsi -l
, -Q
, -Z
atau -i
menyebabkan sqlcmd keluar setelah eksekusi.
Panjang total baris perintah sqlcmd di lingkungan perintah (misalnya cmd.exe
atau bash
), termasuk semua argumen dan variabel yang diperluas, ditentukan oleh sistem operasi yang mendasar.
Prioritas variabel (rendah hingga tinggi)
- Variabel lingkungan tingkat sistem
- Variabel lingkungan tingkat pengguna
- Command shell (
SET X=Y
) diatur pada prompt perintah sebelum menjalankan sqlcmd sqlcmd -v X=Y
:Setvar X Y
Catatan
Untuk melihat variabel lingkungan, di Panel Kontrol, buka Sistem, lalu pilih tab Tingkat Lanjut.
variabel pembuatan skrip sqlcmd
Variabel | Opsi terkait | R/W | Default |
---|---|---|---|
SQLCMDUSER | U- | R | "" |
SQLCMDPASSWORD | -P | -- | "" |
SQLCMDSERVER | -S | R | "DefaultLocalInstance" |
SQLCMDWORKSTATION | -H | R | "ComputerName" |
SQLCMDDBNAME | -d | R | "" |
SQLCMDLOGINTIMEOUT | -L | R/W | "8" (detik) |
SQLCMDSTATTIMEOUT | -t | R/W | "0" = tunggu tanpa batas waktu |
SQLCMDHEADERS | -h | R/W | "0" |
SQLCMDCOLSEP | -s | R/W | " " |
SQLCMDCOLWIDTH | w- | R/W | "0" |
SQLCMDPACKETSIZE | a- | R | "4096" |
SQLCMDERRORLEVEL | -m | R/W | 0 |
SQLCMDMAXVARTYPEWIDTH | -y | R/W | "256" |
SQLCMDMAXFIXEDTYPEWIDTH | -Y | R/W | "0" = tidak terbatas |
SQLCMDEDITOR | R/W | "edit.com" | |
SQLCMDINI | R | "" | |
SQLCMDUSEAAD | -G | R/W | "" |
SQLCMDUSER
, SQLCMDPASSWORD
, dan SQLCMDSERVER
diatur ketika :Connect
digunakan.
R
menunjukkan nilai hanya dapat diatur satu kali selama inisialisasi program.
R/W
menunjukkan bahwa nilai dapat dimodifikasi dengan menggunakan :setvar
perintah dan perintah berikutnya dipengaruhi oleh nilai baru.
perintah sqlcmd
Selain pernyataan Transact-SQL dalam sqlcmd, perintah berikut juga tersedia:
GO
[ hitung ]
:List
[:]RESET
:Error
[:]ED
:Out
[:]!!
:Perftrace
[:]QUIT
:Connect
[:]EXIT
:On Error
:r
:Help
:ServerList
:XML [ ON | OFF ]
:Setvar
:Listvar
Ketahui hal-hal berikut saat Anda menggunakan perintah sqlcmd :
Semua perintah sqlcmd , kecuali
GO
, harus diawali oleh titik dua (:
).Penting
Untuk mempertahankan kompatibilitas mundur dengan skrip osql yang ada, beberapa perintah akan dikenali tanpa titik dua, yang ditunjukkan
:
oleh .perintah sqlcmd hanya dikenali jika muncul di awal baris.
Semua perintah sqlcmd tidak peka huruf besar/kecil.
Setiap perintah harus berada di baris terpisah. Perintah tidak dapat diikuti oleh 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. Editor ini dapat digunakan untuk mengedit batch Transact-SQL saat ini, atau batch terakhir yang dijalankan. Untuk mengedit batch terakhir yang dijalankan, ED
perintah harus diketik segera setelah batch terakhir selesai dieksekusi.
Editor teks didefinisikan oleh SQLCMDEDITOR
variabel lingkungan. Editor defaultnya adalah Edit
. Untuk mengubah editor, atur SQLCMDEDITOR
variabel lingkungan. Misalnya, untuk mengatur editor ke Microsoft Notepad, pada prompt perintah, ketik:
SET SQLCMDEDITOR=notepad
[:] RESET
Menghapus cache pernyataan.
:Daftar
Mencetak isi cache pernyataan.
Variabel
:Setvar <var> [ "value" ]
Menentukan variabel pembuatan skrip sqlcmd. Variabel pembuatan skrip memiliki format berikut: $(VARNAME)
.
Nama variabel tidak peka huruf besar/kecil.
Variabel pembuatan skrip dapat diatur dengan cara berikut:
Secara implisit menggunakan opsi baris perintah. Misalnya,
-l
opsi mengaturSQLCMDLOGINTIMEOUT
variabel sqlcmd .Secara eksplisit dengan menggunakan
:Setvar
perintah .Dengan menentukan variabel lingkungan sebelum Anda menjalankan sqlcmd.
Catatan
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.
Catatan
Hanya variabel pembuatan skrip yang diatur oleh sqlcmd, dan variabel yang diatur menggunakan :Setvar
perintah akan ditampilkan.
Perintah output
:Nama file> kesalahan <| 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 dikirim ke stderr
.
filename
Membuat dan membuka file yang menerima output. Jika file sudah ada, file dipotong menjadi nol byte. Jika file tidak tersedia karena izin atau alasan lain, output tidak dialihkan, dan dikirim ke tujuan terakhir yang ditentukan atau default.
STDERR
Mengalihkan output kesalahan ke
stderr
aliran. Jika ini telah dialihkan, target tempat aliran telah dialihkan menerima output kesalahan.STDOUT
Mengalihkan output kesalahan ke
stdout
aliran. Jika ini telah dialihkan, target tempat aliran telah dialihkan menerima output kesalahan.
:Keluar <nama> file | STDERR | STDOUT
Membuat dan mengalihkan semua hasil kueri ke file yang ditentukan oleh nama file, ke stderr
atau ke stdout
. Secara default, output dikirim ke stdout
. Jika file sudah ada, file dipotong menjadi nol byte. Perintah :Out
dapat muncul beberapa kali dalam skrip.
nama file :P erftrace <|> STDERR | STDOUT
Membuat dan mengalihkan semua informasi pelacakan performa ke file yang ditentukan oleh nama file, ke stderr
atau ke stdout
. Secara default output pelacakan performa dikirim ke stdout
. Jika file sudah ada, file dipotong menjadi nol byte. Perintah :Perftrace
dapat muncul beberapa kali dalam skrip.
Perintah kontrol eksekusi
:On Error [ exit | ignore ]
Mengatur tindakan yang akan dilakukan ketika kesalahan terjadi selama skrip atau eksekusi batch.
exit
Saat opsi digunakan, sqlcmd keluar dengan nilai kesalahan yang sesuai.
ignore
Saat opsi digunakan, sqlcmd mengabaikan kesalahan dan terus mengeksekusi batch atau skrip. Secara default, pesan kesalahan dicetak.
[:] BERHENTI
Menyebabkan sqlcmd keluar.
[:] EXIT [ ( pernyataan ) ]
Memungkinkan Anda menggunakan 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 melewati 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 set dan mengembalikan nilai, hanya pilihan yang dikembalikan. Pernyataan :EXIT()
tanpa apa pun antara tanda kurung menjalankan semuanya sebelum dalam batch, dan kemudian keluar tanpa nilai yang dikembalikan.
Ketika kueri yang salah ditentukan, sqlcmd keluar tanpa nilai yang dikembalikan.
Berikut adalah daftar EXIT
format:
:EXIT
Tidak menjalankan batch, dan kemudian segera keluar dan tidak mengembalikan nilai.
:EXIT( )
Menjalankan batch, lalu keluar dan tidak mengembalikan nilai.
:EXIT(query)
Menjalankan batch yang menyertakan kueri, lalu keluar setelah mengembalikan hasil kueri.
Jika RAISERROR
digunakan dalam skrip sqlcmd , dan status 127 dinaikkan, 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 -1
pengembalian yang -99
akan dicadangkan oleh SQL Server, dan sqlcmd menentukan nilai pengembalian tambahan berikut:
Nilai hasil | Deskripsi |
---|---|
-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 sebagai batch 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. nama file dibaca relatif terhadap direktori startup tempat sqlcmd dijalankan.
Jika file berisi pernyataan Transact-SQL yang tidak diikuti oleh GO
, Anda harus memasukkan GO
pada baris yang mengikuti :r
.
File akan dibaca dan dijalankan setelah terminator batch ditemui. Anda dapat mengeluarkan beberapa :r
perintah. File dapat mencakup perintah sqlcmd apa pun, termasuk terminator GO
batch .
Catatan
Jumlah baris yang ditampilkan dalam mode interaktif akan ditingkatkan satu untuk setiap :r
perintah yang ditemui. Perintah :r
akan 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 waktu habis] [-U user_name [-P password]]
Menyambungkan ke instans SQL Server. Juga menutup koneksi saat ini.
Opsi waktu habis:
Nilai | Perilaku |
---|---|
0 |
Tunggu selamanya |
n>0 |
Tunggu n detik |
Variabel SQLCMDSERVER
pembuatan skrip mencerminkan koneksi aktif saat ini.
Jika batas waktu tidak ditentukan, nilai SQLCMDLOGINTIMEOUT
variabel adalah default.
Jika hanya user_name yang ditentukan (baik sebagai opsi, atau sebagai variabel lingkungan), pengguna diminta untuk memasukkan kata sandi. Pengguna tidak diminta jika SQLCMDUSER
variabel lingkungan atau SQLCMDPASSWORD
telah ditetapkan. 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 menggunakan myserver
variabel pembuatan skrip, Anda akan menggunakan 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. Contoh:
:!! dir
Catatan
Perintah dijalankan pada komputer tempat sqlcmd berjalan.
:XML [ ON | NONAKTIF ]
Untuk informasi selengkapnya, lihat Format Output XML dan Format Output JSON di artikel ini.
Bantuan:
Mencantumkan perintah sqlcmd , bersama dengan deskripsi singkat dari setiap perintah.
nama file sqlcmd
file input sqlcmd dapat ditentukan dengan -i
opsi atau :r
perintah . File output dapat ditentukan dengan -o
opsi atau :Error
perintah , :Out
dan :Perftrace
. Berikut ini adalah beberapa panduan untuk bekerja dengan file-file ini:
:Error
,:Out
dan:Perftrace
harus menggunakan nilai nama file terpisah. Jika nama file yang sama digunakan, input dari perintah dapat diintermiks.Jika file input yang terletak di server jarak jauh dipanggil dari sqlcmd di komputer lokal, dan file berisi jalur file drive seperti
:Out c:\OutputFile.txt
, file output dibuat 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 menimpa file yang ada yang memiliki nama yang sama.
Pesan informasi
sqlcmd mencetak pesan informasi apa pun yang dikirim oleh server. Dalam contoh berikut, setelah pernyataan Transact-SQL dijalankan, pesan informasi dicetak.
Mulai sqlcmd. Pada prompt perintah sqlcmd, ketik kueri:
USE AdventureWorks2022;
GO
Saat Anda menekan ENTER, pesan informasi berikut dicetak:
Changed database context to 'AdventureWorks2022'.
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, ini adalah spasi. Jika nama kolom lebih pendek dari lebar kolom, output diisi dengan spasi hingga kolom berikutnya.
Baris ini diikuti oleh garis pemisah yang merupakan serangkaian karakter tanda hubung. Output berikut menunjukkan contoh.
Mulai sqlcmd. Pada prompt perintah sqlcmd, ketik kueri:
USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Saat Anda menekan ENTER, kumpulan hasil berikut dikembalikan.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
BusinessEntityID
Meskipun lebar kolom hanya empat karakter, kolom tersebut telah diperluas untuk mengakomodasi nama kolom yang lebih panjang. Secara default, output dihentikan pada 80 karakter. Lebar ini dapat diubah dengan menggunakan -w
opsi , atau dengan mengatur SQLCMDCOLWIDTH
variabel pembuatan skrip.
Format output XML
Output XML yang merupakan hasil dari FOR XML
klausul adalah output, tidak diformat, dalam aliran berkelanjutan.
Saat Anda mengharapkan output XML, gunakan perintah berikut: :XML ON
.
Catatan
sqlcmd mengembalikan pesan kesalahan dalam format biasa. Pesan kesalahan juga merupakan output 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. :XML ON
Jika perintah belum dikeluarkan sebelum pernyataan Transact-SQL yang menghasilkan aliran XML dijalankan, outputnya akan rusak. :XML ON
Setelah perintah dikeluarkan, Anda tidak dapat menjalankan pernyataan Transact-SQL yang menghasilkan kumpulan baris reguler.
Catatan
Perintah :XML
tidak mendukung SET STATISTICS XML
pernyataan.
Format output JSON
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 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
praktik terbaik sqlcmd
Gunakan praktik berikut untuk membantu memaksimalkan keamanan dan efisiensi.
Gunakan Keamanan Terpadu.
Gunakan
-X[1]
di lingkungan otomatis.Amankan file input dan output dengan menggunakan izin sistem file yang sesuai.
Untuk meningkatkan performa, lakukan sebanyak mungkin dalam satu sesi sqlcmd , bukan dalam serangkaian sesi.
Atur nilai batas waktu untuk batch atau eksekusi kueri yang lebih tinggi dari yang Anda harapkan untuk menjalankan batch atau kueri.
Gunakan praktik berikut untuk membantu memaksimalkan kebenaran:
Gunakan
-V16
untuk mencatat pesan tingkat keparahan 16 apa pun. Pesan tingkat keparahan 16 menunjukkan kesalahan umum yang dapat dikoreksi oleh pengguna.Periksa kode keluar dan
DOS ERRORLEVEL
variabel setelah proses keluar. sqlcmd kembali0
secara normal, jika tidak, sqlcmd mengatur sebagai dikonfigurasiERRORLEVEL
oleh-V
. Dengan kata lain,ERRORLEVEL
seharusnya tidak diharapkan menjadi nilai yang sama dengan nomor kesalahan yang dilaporkan dari SQL Server. Nomor kesalahan adalah nilai khusus SQL Server yang sesuai dengan fungsi sistem @@ERROR.ERRORLEVEL
adalah nilai khusus sqlcmd untuk menunjukkan mengapa sqlcmd dihentikan, dan nilainya dipengaruhi oleh menentukan-b
argumen baris perintah.
Menggunakan -V16
dalam kombinasi dengan memeriksa kode keluar dan DOS ERRORLEVEL
dapat membantu menangkap kesalahan di lingkungan otomatis, terutama gerbang kualitas sebelum rilis produksi.
Konten terkait
- Pelajari selengkapnya tentang utilitas go-sqlcmd baru di GitHub
- Mulai cepat: Menjalankan gambar kontainer SQL Server Linux dengan Docker
- sqlcmd - Mulai utilitas
- sqlcmd - Jalankan file skrip Transact-SQL
- sqlcmd - gunakan utilitas
- sqlcmd - Gunakan dengan variabel pembuatan skrip
- sqlcmd - Menyambungkan ke mesin database
- Edit Skrip SQLCMD dengan Editor Kueri
- Mengelola Langkah-Langkah Pekerjaan
- Membuat Langkah Pekerjaan CmdExec