Utilitas sqlcmd
Utilitas ini sqlcmd
memungkinkan Anda memasukkan pernyataan Transact-SQL, prosedur sistem, dan file skrip pada prompt perintah, dalam Editor Kueri dalam mode SQLCMD, dalam file skrip Windows atau dalam langkah pekerjaan sistem operasi (Cmd.exe) dari pekerjaan SQL Server Agent. Utilitas ini menggunakan ODBC untuk menjalankan batch Transact-SQL.
Penting
SQL Server Management Studio menggunakan Microsoft.NET FrameworkSqlClient 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 SQL Server Management Studio dalam Mode SQLCMD dan di sqlcmd
utilitas.
Saat ini, sqlcmd
tidak memerlukan spasi antara opsi baris perintah dan nilai . Namun, dalam rilis mendatang, spasi mungkin diperlukan antara opsi baris perintah dan nilai .
Sintaks
sqlcmd
-a
packet_size
-A (dedicated administrator connection)
-b (terminate batch job if there is an error)
-cbatch_terminator-C (trust the server certificate)
-ddb_name-e (echo input)
-E (use trusted connection)
-fcodepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
-hrows_per_header-Hworkstation_name-iinput_file-I (enable quoted identifiers)
-k[1 | 2] (remove or replace control characters)
-Kapplication_intent-llogin_timeout-L[c] (list servers, optional clean output)
-merror_level-Mmultisubnet_failover-N (encrypt connection)
-ooutput_file-p[1] (print statistics, optional colon format)
-Ppassword-q "cmdline query"-Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr)
-R (use client regional settings)
-scol_separator-S [protocol:]server[\instance_name][,port]
-tquery_timeout-u (unicode output file)
-Ulogin_id-vvar = "value"-Verror_severity_level-wcolumn_width-W (remove trailing spaces)
-x (disable variable substitution)
-X[1] (disable commands, startup script, environment variables and optional exit)
-yvariable_length_type_display_width-Yfixed_length_type_display_width-znew_password -Znew_password (and exit)
-? (usage)
Opsi Baris Perintah
Opsi Terkait Login
-Sebuah
Masuk ke SQL Server dengan Koneksi Administrator Khusus (DAC). Koneksi semacam ini digunakan untuk memecahkan masalah server. Ini hanya akan 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.
-C
Sakelar ini digunakan oleh klien untuk mengonfigurasinya agar secara implisit mempercayai sertifikat server tanpa validasi. Opsi ini setara dengan opsi TRUSTSERVERCERTIFICATE = true
ADO.NET .
-d db_name
USE
Mengeluarkan pernyataan db_name saat Anda memulai sqlcmd
. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDDBNAME. Ini menentukan database awal. Defaultnya adalah properti database default login Anda. Jika database tidak ada, pesan kesalahan dihasilkan dan sqlcmd
keluar.
- Aku login_timeout
Menentukan jumlah detik sebelum sqlcmd
waktu masuk ke driver ODBC habis ketika Anda mencoba menyambungkan ke server. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDLOGINTIMEOUT. Batas waktu default untuk masuk sqlcmd
adalah delapan detik. Waktu masuk habis harus berupa angka antara 0 dan 65534. Jika nilai yang disediakan tidak numerik atau tidak termasuk dalam rentang tersebut, sqlcmd
menghasilkan pesan kesalahan. Nilai 0 menentukan waktu habis 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 -E mengabaikan kemungkinan pengaturan variabel lingkungan nama pengguna dan kata sandi seperti SQLCMDPASSWORD. Jika opsi -E digunakan bersama dengan opsi -U atau opsi -P, pesan kesalahan dihasilkan.
-H workstation_name
Nama stasiun kerja. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDWORKSTATION. Nama stasiun kerja tercantum di kolom nama host tampilan katalog sys.processes dan dapat dikembalikan menggunakan prosedur tersimpan sp_who. Jika opsi ini tidak ditentukan, defaultnya adalah nama komputer saat ini. Nama ini dapat digunakan untuk mengidentifikasi sesi yang berbeda sqlcmd
.
-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, utilitas sqlcmd tidak akan mendukung konektivitas ke replika sekunder dalam grup ketersediaan AlwaysOn. Untuk informasi selengkapnya, lihat Sekunder Aktif: Replika Sekunder yang Dapat Dibaca.
-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
nonaktif. Untuk informasi selengkapnya tentang Grup Ketersediaan AlwaysOn, lihat Pendengar Grup Ketersediaan, Konektivitas Klien, dan Failover Aplikasi (SQL Server), Pembuatan dan Konfigurasi Grup Ketersediaan (SQL Server), Pengklusteran Failover dan Grup Ketersediaan AlwaysOn (SQL Server), dan Sekunder Aktif: Replika Sekunder yang Dapat Dibaca .
-N
Sakelar ini digunakan oleh klien untuk meminta koneksi terenkripsi.
Kata sandi -P
Adalah kata sandi yang ditentukan pengguna. Kata sandi sensitif huruf besar/kecil. Jika opsi -U digunakan dan opsi -P tidak digunakan, dan variabel lingkungan SQLCMDPASSWORD belum diatur, sqlcmd
meminta pengguna untuk kata sandi. Jika opsi -P digunakan di akhir prompt perintah tanpa kata sandi sqlcmd
menggunakan kata sandi default (NULL).
Penting
Jangan gunakan kata sandi kosong. Gunakan kata sandi yang kuat. Untuk mengetahui informasi selengkapnya, lihat 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 lingkungan SQLCMDPASSWORD 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 mengatur variabel SQLCMDPASSWORD pada prompt perintah lalu mengakses sqlcmd
utilitas. Pada command prompt, ketik:
SET SQLCMDPASSWORD= p@a$$w0rd
Penting
Kata sandi akan terlihat oleh siapa saja yang dapat melihat monitor komputer Anda.
Pada prompt perintah berikut, ketik:
sqlcmd
Jika kombinasi nama pengguna dan kata sandi salah, pesan kesalahan akan dihasilkan.
Catatan
Variabel lingkungan OSQLPASSWORD telah disimpan untuk kompatibilitas mundur. Variabel lingkungan SQLCMDPASSWORD lebih diutamakan daripada variabel lingkungan OSQLPASSWORD; ini berarti bahwa sqlcmd
dan osql dapat digunakan di samping satu sama lain tanpa gangguan dan skrip lama akan terus berfungsi.
Jika opsi -P digunakan dengan opsi -E, pesan kesalahan akan dihasilkan.
Jika opsi -P diikuti oleh lebih dari satu argumen, pesan kesalahan dihasilkan dan program keluar.
-S [protocol:]server[\instance_name][,port]
Menentukan instans SQL Server yang akan disambungkan. Ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDSERVER.
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
sambungkan 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 Anda memulaisqlcmd
, SQL Server memeriksa dan menggunakan variabel lingkungan SQLCMDSERVER.
Catatan
Variabel lingkungan OSQLSERVER telah disimpan untuk kompatibilitas mundur. Variabel lingkungan SQLCMDSERVER lebih diutamakan daripada variabel lingkungan OSQLSERVER; ini berarti bahwa sqlcmd
dan osql dapat digunakan di samping satu sama lain tanpa gangguan dan skrip lama akan terus berfungsi.
-U login_id
Adalah ID masuk pengguna.
Catatan
Variabel lingkungan OSQLUSER tersedia untuk kompatibilitas mundur. Variabel lingkungan SQLCMDUSER lebih diutamakan daripada variabel lingkungan OSQLUSER. Ini berarti bahwa sqlcmd
dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Ini juga berarti bahwa skrip osql yang ada akan terus berfungsi.
Jika opsi -U atau opsi -P tidak ditentukan, sqlcmd
coba sambungkan dengan menggunakan mode Autentikasi Microsoft Windows. Autentikasi didasarkan pada akun Windows pengguna yang menjalankan sqlcmd
.
Jika opsi -U digunakan dengan opsi -E (dijelaskan nanti dalam topik ini), pesan kesalahan dihasilkan. Jika opsi -U 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
-Z new_password
Ubah kata sandi dan keluar:
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
akan 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. Jika opsi -u telah ditentukan, output akan selalu menjadi Unicode little-endian.Jika tidak ada file output yang ditentukan, halaman kode output akan menjadi halaman kode konsol. 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 SQL atau prosedur tersimpan. Beberapa file dapat ditentukan yang akan dibaca dan diproses secara berurutan. Jangan gunakan spasi di antara nama file. sqlcmd
pertama-tama akan memeriksa untuk melihat apakah semua file yang ditentukan ada. Jika satu atau beberapa file tidak ada, sqlcmd
akan keluar. Opsi -i dan -Q/-q 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: -iinput_file -I input_file.
-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 dihasilkan, dan sqlcmd
keluar. sqlcmd
tidak mendukung penulisan bersamaan dari beberapa sqlcmd
proses ke file yang sama. Output file akan rusak atau salah. Lihat tombol -f untuk informasi selengkapnya tentang format file. File ini akan dibuat jika tidak ada. File dengan nama yang sama dari sesi sebelumnya sqlcmd
akan ditimpa. File yang ditentukan di sini bukan file stdout . Jika file stdout ditentukan, file ini tidak akan digunakan.
Contoh jalur:
-o C:\< nama file>
-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. Tidak berpengaruh jika Anda menggunakan -o. Secara default, pesan dikirim ke stdout.
-R
sqlcmd
Penyebab untuk 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.
Opsi Eksekusi Kueri
-e
Menulis skrip input ke perangkat output standar (stdout).
-Saya
Mengatur opsi set QUOTED_IDENTIFIER koneksi ke AKTIF. Secara default, diatur ke NONAKTIF. Untuk informasi selengkapnya, lihat SET QUOTED_IDENTIFIER (Transact-SQL).
-q" cmdline query "
Menjalankan kueri saat sqlcmd
dimulai, tetapi tidak keluar 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 AdventureWorks2012 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2012 -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 nanti dalam topik ini.
Kueri cmdline -Q"
Menjalankan kueri saat sqlcmd
dimulai dan kemudian segera keluar 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 AdventureWorks2012 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2012 -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 nanti dalam topik ini.
-t query_timeout
Menentukan jumlah detik sebelum perintah (atau pernyataan SQL) kehabisan waktu. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDSTATTIMEOUT. Jika nilai time_out tidak ditentukan, perintah tidak kehabisan waktu. Kueri**time_out harus berupa angka antara 1 dan 65534. Jika nilai yang disediakan tidak numerik atau tidak termasuk dalam rentang tersebut, sqlcmd
menghasilkan pesan kesalahan.
Catatan
Nilai waktu habis aktual dapat bervariasi dari nilai time_out yang ditentukan selama beberapa detik.
-vvar = value[ var = value...]
sqlcmd
Membuat variabel pembuatan skrip yang dapat digunakan dalam sqlcmd
skrip. Sertakan nilai dalam tanda kutip jika nilai berisi spasi. Anda dapat menentukan beberapa nilai var="values
". 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"
-x
sqlcmd
Penyebab mengabaikan variabel pembuatan skrip. Ini berguna ketika skrip berisi banyak pernyataan INSERT yang mungkin berisi string yang memiliki format yang sama dengan variabel reguler, seperti $(variable_name).
Opsi Pemformatan
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 sqlcmd
variabel pembuatan skrip SQLCMDHEADERS. Gunakan -1 untuk menentukan bahwa header tidak boleh dicetak. Nilai apa pun yang tidak valid menyebabkan sqlcmd
menghasilkan pesan kesalahan lalu keluar.
-k [12 | ]
Menghapus semua karakter kontrol, seperti tab dan karakter baris baru dari output. Ini mempertahankan pemformatan kolom saat data dikembalikan. Jika 1 ditentukan, karakter kontrol digantikan oleh spasi tunggal. Jika 2 ditentukan, karakter kontrol berturut-turut digantikan oleh satu spasi. -k sama dengan -k1.
-s col_separator
Menentukan karakter pemisah kolom. Defaultnya adalah spasi kosong. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDCOLSEP. 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 column_width
Menentukan lebar layar untuk output. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDCOLWIDTH. Lebar kolom harus angka yang lebih besar dari 8 dan kurang dari 65536. Jika lebar kolom yang ditentukan tidak termasuk dalam rentang tersebut, sqlcmd
hasilkan dan 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 opsi -s saat menyiapkan data yang akan diekspor ke aplikasi lain. Tidak dapat digunakan dengan opsi -y atau -Y .
-y variable_length_type_display_width
sqlcmd
Mengatur variabel pembuatan skrip SQLCMDMAXVARTYPEWIDTH. Defaultnya adalah 256. Ini membatasi jumlah karakter yang dikembalikan untuk jenis data panjang variabel besar:
varchar(max)
nvarchar(max)
varbinary(max)
xml
UDT (user-defined data types)
text
ntext
image
Catatan
UDT dapat memiliki panjang tetap tergantung pada implementasinya. Jika panjang UDT tetap ini lebih pendek dari display_width, nilai UDT yang dikembalikan tidak terpengaruh. Namun, jika panjangnya lebih panjang dari display_width, output dipotong.
Penting
Gunakan opsi -y 0 dengan sangat hati-hati karena dapat menyebabkan masalah performa serius pada server dan jaringan, tergantung pada ukuran data yang dikembalikan.
-Y fixed_length_type_display_width
sqlcmd
Mengatur variabel pembuatan skrip SQLCMDMAXFIXEDTYPEWIDTH. Defaultnya adalah 0 (tidak terbatas). Membatasi jumlah karakter yang dikembalikan untuk jenis data berikut:
char(
n)
, di mana 1<=n<=8000nchar(n
n)
, di mana 1<=n<=4000varchar(n
n)
, di mana 1<=n<=8000nvarchar(n
n)
, di mana 1<=n<=4000varbinary(n
n)
, di mana 1<=n<=4000variant
Opsi Pelaporan Kesalahan
-b
Menentukan bahwa sqlcmd
keluar dan mengembalikan nilai DOS ERRORLEVEL saat terjadi kesalahan. Nilai yang dikembalikan ke variabel DOS ERRORLEVEL 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 akan 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).
sqlcmd
Jika skrip berisi komentar yang salah, kesalahan sintaksis, atau tidak memiliki variabel pembuatan skrip, ERRORLEVEL yang 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 sqlcmd
variabel pembuatan skrip SQLCMDERRORLEVEL. Variabel ini memiliki default 0.
-V
error_severity_level
Mengontrol tingkat keparahan yang digunakan untuk mengatur variabel ERRORLEVEL. Pesan kesalahan yang memiliki tingkat keparahan lebih besar dari atau sama dengan nilai ini mengatur ERRORLEVEL. Nilai yang kurang dari 0 dilaporkan sebagai 0. File Batch dan CMD dapat digunakan untuk menguji nilai variabel ERRORLEVEL.
Opsi Lain-lain
-a packet_size
Meminta paket dengan ukuran yang berbeda. Opsi ini mengatur sqlcmd
variabel pembuatan skrip SQLCMDPACKETSIZE. packet_size harus berupa nilai antara 512 dan 32767. Default = 4096. Ukuran paket yang lebih besar dapat meningkatkan performa untuk eksekusi skrip yang memiliki banyak pernyataan SQL di antara perintah GO. 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 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 pada 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 opsional c ditentukan, output muncul tanpa baris Server: header dan setiap baris server dicantumkan tanpa spasi di depannya. Ini disebut sebagai output bersih. Output bersih meningkatkan performa pemrosesan bahasa skrip.
-p[1]
Mencetak statistik performa untuk setiap tataan hasil. Berikut ini 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 opsional 1 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 melanjutkan. Jika parameter opsional 1 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 variabel skrip SQLCMDINI agar tidak dijalankan. Untuk informasi selengkapnya tentang sqlcmd
variabel pembuatan skrip, lihat Menggunakan sqlcmd dengan Variabel Pembuatan Skrip.
-?
Menampilkan ringkasan sqlcmd
sintaks opsi.
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, pesan "<baris x> yang terpengaruh" tidak muncul ketika tidak berlaku untuk pernyataan yang dijalankan.
Untuk menggunakan sqlcmd
secara interaktif, ketik sqlcmd
pada prompt perintah dengan satu atau beberapa opsi yang dijelaskan sebelumnya dalam topik ini. Untuk informasi selengkapnya, lihat Menggunakan Utilitas sqlcmd
Catatan
Opsi -L, -Q, -Z atau -i menyebabkan sqlcmd
keluar setelah eksekusi.
Panjang sqlcmd
total baris perintah di lingkungan perintah (Cmd.exe), termasuk semua argumen dan variabel yang diperluas, adalah yang ditentukan oleh sistem operasi untuk Cmd.exe.
Prioritas Variabel (Rendah ke 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 klik tab Tingkat Lanjut.
Variabel Pembuatan Skrip sqlcmd
Variabel | Sakelar 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 | "" |
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 perintah setvar dan perintah berikutnya akan dipengaruhi oleh nilai baru.
Perintah sqlcmd
Selain pernyataan Transact-SQL dalam sqlcmd
, perintah berikut juga tersedia:
GO [hitung] | :Daftar |
[:] RESET | Kesalahan: |
[:] ED | :Keluar |
[:] !! | :P erftrace |
[:] BERHENTI | :Sambung |
[:] KELUAR | :Pada Kesalahan |
:r | Bantuan: |
:ServerList | :XML [AKTIF | NONAKTIF] |
:Setvar | :Listvar |
Ketahui hal-hal berikut saat Anda menggunakan sqlcmd
perintah:
Semua
sqlcmd
perintah, kecuali GO, harus diawali oleh titik dua (:).Penting
Untuk mempertahankan kompatibilitas mundur dengan skrip osql yang ada, beberapa perintah akan dikenali tanpa titik dua. Ini ditunjukkan oleh [:].
sqlcmd
perintah hanya dikenali jika muncul di awal baris.Semua
sqlcmd
perintah 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, perintah ED harus diketik segera setelah batch terakhir selesai dieksekusi.
Editor teks didefinisikan oleh variabel lingkungan SQLCMDEDITOR. Editor default adalah 'Edit'. Untuk mengubah editor, atur variabel lingkungan SQLCMDEDITOR. 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
" ]
sqlcmd
Menentukan variabel pembuatan skrip. 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, opsi -l mengatur variabel SQLCMDLOGINTIMEOUT
sqlcmd
.Secara eksplisit dengan menggunakan perintah :Setvar .
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 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 pembuatan 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 perintah :Setvar yang akan 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 Kesalahan dapat muncul beberapa kali dalam skrip. Secara default, output kesalahan dikirim ke stderr.
nama file
Membuat dan membuka file yang akan menerima output. Jika file sudah ada, file akan dipotong menjadi nol byte. Jika file tidak tersedia karena izin atau alasan lain, output tidak akan dialihkan dan akan dikirim ke tujuan terakhir yang ditentukan atau default.
STDERR
Mengalihkan output kesalahan ke aliran stderr . Jika ini telah dialihkan, target tempat aliran telah dialihkan akan menerima output kesalahan.
STDOUT
Mengalihkan output kesalahan ke aliran stdout . Jika ini telah dialihkan, target tempat aliran telah dialihkan akan 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 akan dipotong menjadi nol byte. Perintah Keluar dapat muncul beberapa kali dalam skrip.
:P erftrace < 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 pelacakan performa dikirim ke stdout. Jika file sudah ada, file akan 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 menjalankan batch atau skrip. Secara default, pesan kesalahan akan dicetak.
[:] BERHENTI
sqlcmd
Penyebab untuk keluar.
[:] EXIT[ (statement
) ]
Memungkinkan Anda menggunakan hasil pernyataan SELECT sebagai nilai pengembalian dari sqlcmd
. Jika numerik, kolom pertama dari baris hasil terakhir dikonversi menjadi bilangan bulat 4-byte (panjang). MS-DOS meneruskan byte rendah ke proses induk atau tingkat kesalahan sistem operasi. Windows 200x melewati bilangan bulat 4-byte secara keseluruhan. Sintaksnya adalah:
:EXIT(query)
Contohnya:
:EXIT(SELECT @@ROWCOUNT)
Anda juga dapat menyertakan parameter EXIT sebagai bagian dari file batch. Misalnya, pada prompt perintah, ketik:
sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"
sqlcmd
Utilitas 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 di antara tanda kurung menjalankan semuanya sebelum dalam batch dan kemudian keluar tanpa nilai yang dikembalikan.
Ketika kueri yang salah ditentukan, sqlcmd
akan keluar tanpa nilai yang dikembalikan.
Berikut adalah daftar format EXIT:
- :KELUAR
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 sqlcmd
skrip dan status 127 dinaikkan, sqlcmd
akan keluar dan mengembalikan ID pesan kembali ke klien. Contohnya:
RAISERROR(50001, 10, 127)
Kesalahan ini akan menyebabkan sqlcmd
skrip berakhir dan mengembalikan ID pesan 50001 ke klien.
Nilai yang dikembalikan -1 hingga -99 dicadangkan oleh SQL Server; sqlcmd
menentukan nilai pengembalian tambahan berikut:
Nilai yang Dikembalikan | 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. Saat menentukan nilai untuk dihitung, pernyataan yang di-cache akan dieksekusi menghitung waktu, sebagai satu batch.
Perintah Lain-lain
:r < nama file >
Mengurai pernyataan dan sqlcmd
perintah Transact-SQL tambahan dari file yang ditentukan oleh **<filename
>**ke dalam cache pernyataan.
Jika file berisi pernyataan Transact-SQL yang tidak diikuti oleh GO, Anda harus memasukkan GO pada baris yang mengikuti :r.
Catatan
<Filename > dibaca relatif terhadap direktori startup tempat sqlcmd
dijalankan.
File akan dibaca dan dijalankan setelah terminator batch ditemui. Anda dapat mengeluarkan beberapa perintah :r . File dapat mencakup perintah apa pun sqlcmd
. Ini termasuk terminator batch GO.
Catatan
Jumlah baris yang ditampilkan dalam mode interaktif akan ditingkatkan satu untuk setiap perintah :r yang ditemui. Perintah :r akan muncul dalam output perintah daftar.
:Daftar server
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]]
Menyambungkan ke instans SQL Server. Juga menutup koneksi saat ini.
Opsi waktu habis:
0 | tunggu selamanya |
n>0 | tunggu n detik |
Variabel pembuatan skrip SQLCMDSERVER akan mencerminkan koneksi aktif saat ini.
Jika batas waktu tidak ditentukan, nilai variabel SQLCMDLOGINTIMEOUT adalah default.
Jika hanya user_name yang ditentukan (baik sebagai opsi, atau sebagai variabel lingkungan), pengguna akan diminta untuk memasukkan kata sandi. Ini tidak benar jika variabel lingkungan SQLCMDUSER atau SQLCMDPASSWORD telah ditetapkan. Jika tidak ada opsi atau variabel lingkungan yang disediakan, mode Autentikasi Windows digunakan untuk masuk. Misalnya untuk menyambungkan ke instans, instance1
, dari SQL Server, myserver
, dengan menggunakan keamanan terintegrasi, Anda akan menggunakan hal berikut:
:connect myserver\instance1
Untuk menyambungkan ke instans default menggunakan myserver
variabel pembuatan skrip, Anda akan menggunakan hal berikut:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:] !!<perintah>
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 yang sqlcmd
sedang berjalan.
:XML [AKTIF | NONAKTIF]
Untuk informasi selengkapnya, lihat "Format Output XML," nanti dalam topik ini
Bantuan:
Mencantumkan sqlcmd
perintah bersama dengan deskripsi singkat dari setiap perintah.
Nama File sqlcmd
sqlcmd
file input dapat ditentukan dengan opsi -i atau perintah :r . File output dapat ditentukan dengan opsi -o atau perintah :Error, :Out dan :P erftrace . Berikut ini adalah beberapa panduan untuk bekerja dengan file-file ini:
:Error, :Out dan :P erftrace harus menggunakan terpisah <
filename
>. Jika sama <filename
> digunakan, input dari perintah dapat diintermiks.Jika file input yang terletak di server jarak jauh dipanggil dari
sqlcmd
komputer lokal dan file berisi jalur file drive seperti :out c:\OutputFile.txt. File output akan dibuat pada komputer lokal dan bukan pada 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 baru
sqlcmd
akan 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.
Pada perintah, masukkan berikut ini:
sqlcmd
At the sqlcmd prompt type:
USE AdventureWorks2012;
GO
Saat Anda menekan ENTER, pesan informasi berikut dicetak: "Konteks database yang diubah menjadi 'AdventureWorks2012'."
Format Output dari Kueri Transact-SQL
sqlcmd
pertama mencetak header kolom yang berisi nama kolom yang ditentukan dalam daftar pilih. Nama kolom dipisahkan dengan menggunakan karakter SQLCMDCOLSEP. Secara default, ini adalah spasi. Jika nama kolom lebih pendek dari lebar kolom, output diisi dengan spasi hingga kolom berikutnya.
Baris ini akan diikuti oleh baris pemisah yang merupakan serangkaian karakter tanda hubung. Output berikut menunjukkan contoh.
Mulai sqlcmd
. sqlcmd
Pada prompt perintah, ketik berikut ini:
USE AdventureWorks2012;
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 4 karakter, kolom tersebut telah diperluas untuk mengakomodasi nama kolom yang lebih panjang. Secara default, output dihentikan pada 80 karakter. Ini dapat diubah dengan menggunakan opsi -w , atau dengan mengatur variabel pembuatan skrip SQLCMDCOLWIDTH.
XML Output Format
Output XML yang merupakan hasil dari klausul FOR XML 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. Perhatikan bahwa pesan kesalahan juga dihasilkan dalam aliran teks XML dalam format XML. Dengan menggunakan :XML ON
, sqlcmd
tidak menampilkan pesan informasi.
Untuk menonaktifkan mode XML, gunakan perintah berikut: :XML OFF
.
Perintah GO tidak boleh muncul sebelum perintah XML OFF dikeluarkan karena perintah XML OFF beralih sqlcmd
kembali ke output berorientasi baris.
Data XML (dialirkan) dan data himpunan baris tidak dapat dicampur. Jika perintah XML ON belum dikeluarkan sebelum pernyataan Transact-SQL yang menghasilkan aliran XML dijalankan, output akan kacau. Jika perintah XML ON telah dikeluarkan, Anda tidak dapat menjalankan pernyataan Transact-SQL yang menghasilkan kumpulan baris reguler.
Catatan
Perintah :XML tidak mendukung pernyataan SET STATISTICS XML.
Praktik Terbaik sqlcmd
Gunakan praktik berikut untuk membantu memaksimalkan keamanan dan efisiensi.
Gunakan Keamanan Terpadu.
Gunakan
-X
di lingkungan otomatis.Amankan file input dan output dengan menggunakan izin sistem file NTFS yang sesuai.
Untuk meningkatkan performa, lakukan sebanyak mungkin dalam satu
sqlcmd
sesi, alih-alih dalam serangkaian sesi.Atur nilai batas waktu untuk batch atau eksekusi kueri yang lebih tinggi dari yang Anda harapkan untuk menjalankan batch atau kueri.
Lihat Juga
Memulai Utilitas sqlcmd
Jalankan File Skrip Transact-SQL Menggunakan sqlcmd
Menggunakan Utilitas sqlcmd
Menggunakan sqlcmd dengan Variabel Pembuatan Skrip
Menyambungkan ke Mesin Database Dengan sqlcmd
Edit Skrip SQLCMD dengan Editor Kueri
Mengelola Langkah-Langkah Pekerjaan
Membuat Langkah Pekerjaan CmdExec