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 dalam 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
-J
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 = trueADO.NET .

-ddb_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.

- Akulogin_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. Batas waktu masuk harus berupa angka antara 0 dan 65534. Jika nilai yang diberikan 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.

-Hworkstation_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 .

-Kapplication_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.

-Mmultisubnet_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 Listener 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 prompt perintah, 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 Memulai sqlcmd, 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.

-Ulogin_id
Apakah 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 maupun 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.

-znew_password
Ubah kata sandi:

sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd

-Znew_password
Ubah kata sandi dan keluar:

sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd

Opsi Input/Output
-fcodepage | 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 ada konversi yang diperlukan.

  • 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 berada di halaman kode yang sama. File input Unicode dan non-Unicode dapat dicampur.

Masukkan chcp di prompt perintah untuk memverifikasi halaman kode Cmd.exe.

-iinput_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-Iinput_file.

-ooutput_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 sakelar -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:\Beberapa Folder\<nama> file"

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).

-I
Mengatur opsi SET QUOTED_IDENTIFIER koneksi ke AKTIF. Secara default, ini diatur ke NONAKTIF. Untuk informasi selengkapnya, lihat MENGATUR 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 prompt perintah, 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.

-Q"cmdline query"
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 prompt perintah, 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.

-tquery_timeout
Menentukan jumlah detik sebelum waktu perintah (atau pernyataan SQL) habis. 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 diberikan 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...]
sqlcmdMembuat 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 satu spasi. Jika 2 ditentukan, karakter kontrol berturut-turut digantikan oleh satu spasi. -k sama dengan -k1.

-scol_separator
Menentukan karakter pemisah kolom. Defaultnya adalah spasi kosong. Opsi ini mengatur sqlcmd variabel pembuatan skrip SQLCMDCOLSEP. Untuk menggunakan karakter yang memiliki arti khusus pada sistem operasi seperti ampersand (&), atau titik koma (;), sertakan karakter dalam tanda kutip ("). Pemisah kolom dapat berupa karakter 8-bit apa pun.

-wcolumn_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. Saat baris output melebihi lebar kolom yang ditentukan, baris 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 .

-yvariable_length_type_display_width
sqlcmd Mengatur variabel 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 panjang 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.

-Yfixed_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<=8000

  • nchar(nn), di mana 1<=n<=4000

  • varchar(nn), di mana 1<=n<=8000

  • nvarchar(nn), di mana 1<=n<=4000

  • varbinary(nn), di mana 1<=n<=4000

  • variant

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.

-merror_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.

-Verror_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 yang ditetapkan ERRORLEVEL. Nilai yang kurang dari 0 dilaporkan sebagai 0. File Batch dan CMD dapat digunakan untuk menguji nilai variabel ERRORLEVEL.

Opsi Lain-lain
-apacket_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 gunakan default server untuk ukuran paket.

-cbatch_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]
Lists 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 terpotong 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 header Server: 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.)

Di 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 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, itu 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 ditunjukkan di bagian sintaks.

Saat beberapa hasil dikembalikan, sqlcmd mencetak baris kosong di antara setiap tataan hasil 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)

  1. Variabel lingkungan tingkat sistem.

  2. Variabel lingkungan tingkat pengguna

  3. Command shell (SET X=Y) diatur pada prompt perintah sebelum menjalankan sqlcmd.

  4. sqlcmd-v X=Y

  5. :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 -J 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 :Out ekspres
[:] !! :P erftrace
[:] BERHENTI :Menghubungkan
[:] KELUAR :Saat Terjadi Kesalahan
:R :Tolong
: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 ditentukan 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 singgahan 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 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 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 ditetapkan.

Catatan

Hanya variabel 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 dialihkan akan menerima output kesalahan.

STDOUT
Mengalihkan output kesalahan ke aliran stdout . Jika ini telah dialihkan, target tempat aliran dialihkan akan menerima output kesalahan.

:Out ekspres <Filename>| 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 <Filename>| 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 terjadi kesalahan selama skrip atau eksekusi batch.

exit Saat opsi digunakan, sqlcmd keluar dengan nilai kesalahan yang sesuai.

ignore Saat opsi digunakan, sqlcmd abaikan kesalahan dan terus jalankan batch atau skrip. Secara default, pesan kesalahan akan dicetak.

[:] BERHENTI
sqlcmd Penyebab keluar.

[:] KELUAR[ (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 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')"

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 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 berhenti 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 yang dikembalikan.
-101 Tidak ada baris yang ditemukan saat memilih nilai yang dikembalikan.
-102 Terjadi kesalahan konversi saat memilih nilai yang dikembalikan.

GO [hitung]
GO memberi sinyal 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 <Filename>
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
Lists server yang dikonfigurasi secara lokal dan nama server yang disiarkan di jaringan.

:Sambungkanserver_name[\instance_name] [-l waktu habis] [-U user_name [-P password]]
Menyambungkan ke instans SQL Server. Juga menutup koneksi saat ini.

Opsi waktu habis:

0 tunggu selamanya
n>0 tunggu selama n detik

Variabel 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 maupun 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 skrip, Anda akan menggunakan yang berikut ini:

: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. Contohnya:

:!! Dir

Catatan

Perintah dijalankan pada komputer yang sqlcmd sedang berjalan.

:XML [ON | OFF]
Untuk informasi selengkapnya, lihat "Format Output XML," nanti dalam topik ini

:Tolong
sqlcmd Lists 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: "Mengubah konteks database ke '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 dilapisi 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 klausa 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 rusak. 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, bukan dalam serangkaian sesi.

  • Atur nilai waktu habis untuk eksekusi batch atau kueri yang lebih tinggi dari yang Anda harapkan untuk menjalankan batch atau kueri.

Lihat juga

Mulai Utilitas sqlcmd
Jalankan File Skrip Transact-SQL Menggunakan sqlcmd
Menggunakan Utilitas sqlcmd
Menggunakan sqlcmd dengan Variabel Pembuatan Skrip
Menyambungkan ke Mesin Database Dengan sqlcmd
Mengedit Skrip SQLCMD dengan Editor Kueri
Mengelola Langkah Pekerjaan
Membuat Langkah Pekerjaan CmdExec