Utilitas sqlcmd
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Untuk SQL Server 2014 dan yang lebih rendah, lihat Utilitas sqlcmd.
Untuk menggunakan sqlcmd di Linux, lihat Menginstal sqlcmd dan bcp di Linux.
Utilitas sqlcmd memungkinkan Anda memasukkan pernyataan transact-SQL, prosedur sistem, dan file skrip melalui berbagai mode yang tersedia:
- 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.
Utilitas menggunakan ODBC untuk menjalankan batch Transact-SQL.
Mengunduh dan menginstal sqlcmd
Windows
Unduh Utilitas Baris Perintah Microsoft 15 untuk SQL Server (x64) (2,6 MB)
Unduh Utilitas Baris Perintah Microsoft 15 untuk SQL Server (x86) (2,3 MB)
Alat baris perintah adalah Ketersediaan Umum (GA), namun dirilis dengan paket alat penginstal untuk SQL Server 2019 (15.x).
Informasi Versi
Nomor rilis: 15.0.2
Nomor build: 15.0.2000.5
Tanggal rilis: 11 September 2020
Versi baru SQLCMD mendukung autentikasi Azure AD, termasuk dukungan Autentikasi Multifaktor (MFA) untuk fitur SQL Database, Azure Synapse Analytics, dan Always Encrypted. BCP baru mendukung autentikasi Azure AD, termasuk dukungan Autentikasi Multifaktor (MFA) untuk SQL Database dan analitik Azure Synapse.
Persyaratan Sistem Windows 10 , Windows 7, Windows 8, Windows 8.1, Windows Server 2008 - 2022.
Komponen ini memerlukan Windows Installer 5 bawaan dan Microsoft ODBC Driver 17 untuk SQL Server.
Linux/macOS
Lihat Menginstal sqlcmd dan bcp di Linux untuk instruksi menginstal sqlcmd di Linux dan macOS.
Memeriksa versi
Untuk memeriksa perintah eksekusi sqlcmd -? versi SQLCMD dan mengonfirmasi bahwa versi 15.0.2000.5 atau yang lebih tinggi sedang digunakan.
Catatan
Anda memerlukan versi 13.1 atau yang lebih tinggi untuk mendukung autentikasi Always Encrypted (-g) dan Azure Active Directory (-G). Anda mungkin memiliki beberapa versi sqlcmd.exe yang terinstal pada komputer Anda. Pastikan Anda menggunakan versi yang benar. Untuk menentukan versi, jalankan sqlcmd -?.
Sudah diinstal sebelumnya
Azure Cloud Shell
Anda dapat mencoba utilitas sqlcmd dari Azure Cloud Shell karena telah diinstal sebelumnya secara default: Luncurkan Cloud Shell
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 SQLCMD, pilih Mode SQLCMD dari menu dropdown Kueri navigasi atas.
Penting
SQL Server Management Studio (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 dalam SQL Server Management Studio dalam Mode SQLCMD dan di utilitas sqlcmd.
Sintaks
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 .
Untuk informasi lebih mendalam tentang sintaks sqlcmd dan penggunaan, lihat:
sqlcmd
-a packet_size
-A (dedicated administrator connection)
-b (terminate batch job if there is an error)
-c batch_terminator
-C (trust the server certificate)
-d db_name
-D
-e (echo input)
-E (use trusted connection)
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
-g (enable column encryption)
-G (use Azure Active Directory for authentication)
-h rows_per_header
-H workstation_name
-i input_file
-I (enable quoted identifiers)
-j (Print raw error messages)
-k[1 | 2] (remove or replace control characters)
-K application_intent
-l login_timeout
-L[c] (list servers, optional clean output)
-m error_level
-M multisubnet_failover
-N (encrypt connection)
-o output_file
-p[1] (print statistics, optional colon format)
-P password
-q "cmdline query"
-Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr)
-R (use client regional settings)
-s col_separator
-S [protocol:]server[instance_name][,port]
-t query_timeout
-u (unicode output file)
-U login_id
-v var = "value"
-V error_severity_level
-w screen_width
-W (remove trailing spaces)
-x (disable variable substitution)
-X[1] (disable commands, startup script, environment variables, optional exit)
-y variable_length_type_display_width
-Y fixed_length_type_display_width
-z new_password
-Z new_password (and exit)
-? (usage)
Opsi Baris Perintah
Opsi Terkait Login
-A
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 opsi -G. Saat menyambungkan ke SQL Database menggunakan -A, Anda harus menjadi administrator server SQL. DAC tidak tersedia untuk administrator Azure Active Directory.
-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 variabel pembuatan skrip sqlcmd SQLCMDDBNAME. Parameter ini menentukan database awal. Defaultnya adalah properti database default login Anda. Jika database tidak ada, pesan kesalahan dihasilkan dan sqlcmd keluar.
-D
Menafsirkan nama server yang diberikan ke -S sebagai DSN, bukan nama host. Untuk informasi selengkapnya, lihat Dukungan DSN di sqlcmd dan bcp di Menyambungkan dengan sqlcmd.
Catatan
Opsi -D hanya tersedia di klien Linux dan MacOS. Pada klien Windows, sebelumnya merujuk pada opsi yang sekarang usang yang telah dihapus dan diabaikan.
- Akulogin_timeout
Menentukan jumlah detik sebelum login sqlcmd ke driver ODBC kehabisan waktu saat Anda mencoba menyambungkan ke server. Opsi ini mengatur variabel pembuatan skrip sqlcmd SQLCMDLOGINTIMEOUT. Batas waktu default untuk masuk ke sqlcmd adalah delapan detik. Saat menggunakan opsi -G untuk menyambungkan ke SQL Database atau Azure Synapse Analytics dan mengautentikasi menggunakan Azure Active Directory, nilai batas waktu setidaknya 30 detik disarankan. 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 yang 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.
-g
Mengatur Pengaturan Enkripsi Kolom ke Enabled. Untuk informasi selengkapnya, lihat Always Encrypted. Hanya kunci master yang disimpan di Windows Certificate Store yang didukung. Sakelar -g memerlukan setidaknya sqlcmd versi 13.1. Untuk menentukan versi Anda, jalankan sqlcmd -?.
-G
Sakelar ini digunakan oleh klien saat menyambungkan ke SQL Database atau Azure Synapse Analytics untuk menentukan bahwa pengguna diautentikasi menggunakan autentikasi Azure Active Directory. Opsi ini mengatur variabel pembuatan skrip sqlcmd SQLCMDUSEAAD = true. Sakelar -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 Azure Active Directory. Opsi -A tidak didukung dengan opsi -G.
Penting
Opsi -G ini hanya berlaku untuk Azure SQL Database dan Azure Synapse Analytics.
Autentikasi Interaktif AAD saat ini tidak didukung di Linux atau macOS. Autentikasi Terintegrasi AAD memerlukan Microsoft ODBC Driver 17 untuk SQL Server versi 17.6.1 atau yang lebih tinggi dan lingkungan Kerberos yang Dikonfigurasi dengan benar.
Azure Active Directory Nama Pengguna dan Kata Sandi:
Ketika Anda ingin menggunakan nama pengguna dan kata sandi Azure Active Directory, Anda dapat memberikan opsi -G dan juga menggunakan nama pengguna dan kata sandi dengan menyediakan opsi -U dan -P.
Sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -U bob@contoso.com -P MyAADPassword -GParameter -G menghasilkan string koneksi berikut di backend:
SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID= bob@contoso.com;PWD=MyAADPassword;AUTHENTICATION = ActiveDirectoryPasswordTerintegrasi Azure Active Directory
Untuk autentikasi Azure Active Directory Terintegrasi, berikan opsi -G tanpa nama pengguna atau kata sandi. Autentikasi Terintegrasi AAD memerlukan Microsoft ODBC Driver 17 untuk SQL Server versi 17.6.1 atau yang lebih tinggi dan lingkungan Kerberos yang dikonfigurasi dengan benar.
Sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -GIni akan menghasilkan string koneksi berikut di backend:
SERVER = Target_DB_or_DW.testsrv.database.windows.net Authentication = ActiveDirectoryIntegrated; Trusted_Connection=NOCatatan
Opsi
-E(Trusted_Connection) tidak dapat digunakan bersama dengan-Gopsi .Azure Active Directory Interaktif
Autentikasi Azure AD Interaktif untuk Azure SQL Database dan Azure Synapse Analytics, memungkinkan Anda menggunakan metode interaktif yang mendukung autentikasi multifaktor. Untuk informasi selengkapnya, lihat Autentikasi Interaktif Direktori Aktif.
Azure AD interaktif memerlukan sqlcmdversi 15.0.1000.34 atau yang lebih baru serta ODBC versi 17.2 atau yang lebih baru.
Untuk mengaktifkan autentikasi interaktif, berikan opsi -G dengan nama pengguna (-U) saja, tanpa kata sandi.
Contoh berikut mengekspor data menggunakan mode interaktif Azure AD yang menunjukkan nama pengguna di mana pengguna mewakili akun AAD. Ini adalah contoh yang sama yang digunakan di bagian sebelumnya: Azure Active Directory Nama Pengguna dan Kata Sandi.
Mode interaktif mengharuskan kata sandi dimasukkan secara manual, atau untuk akun dengan autentikasi multifaktor diaktifkan, selesaikan metode autentikasi MFA yang dikonfigurasi.
sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -G -U alice@aadtest.onmicrosoft.comPerintah sebelumnya menghasilkan string koneksi berikut di backend:
SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID=alice@aadtest.onmicrosoft.com; AUTHENTICATION = ActiveDirectoryInteractiveJika pengguna Azure AD adalah pengguna federasi domain menggunakan akun Windows, nama pengguna yang diperlukan di baris perintah, berisi akun domainnya (misalnya, joe@contoso.com lihat di bawah):
sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -G -U joe@contoso.comJika pengguna tamu ada di Azure AD tertentu dan merupakan bagian dari grup yang ada di SQL Database yang memiliki izin database untuk menjalankan perintah sqlcmd, alias pengguna tamu mereka digunakan (misalnya, keith0@adventureworks.com).
Penting
Ada masalah yang diketahui saat menggunakan
-Gopsi dan-Udengan SQLCMD, di mana menempatkan-Uopsi sebelum-Gopsi dapat menyebabkan autentikasi gagal. Selalu mulai dengan-Gopsi diikuti dengan-Uopsi .
-Hworkstation_name
Nama stasiun kerja. Opsi ini mengatur variabel pembuatan skrip sqlcmd SQLCMDWORKSTATION. Nama stasiun kerja tercantum di kolom nama host tampilan katalog sys.sysprocesses 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 yang berbeda
sesi sqlcmd .
-j Mencetak pesan kesalahan mentah ke layar.
-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 (Grup Ketersediaan AlwaysOn)
-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 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
Sakelar ini digunakan oleh klien untuk meminta koneksi terenkripsi.
-Pkata sandi
Adalah kata sandi yang ditentukan pengguna. Kata sandi peka huruf besar/kecil. Jika opsi -U digunakan dan opsi -P tidak digunakan, dan variabel lingkungan SQLCMDPASSWORD belum diatur, sqlcmd meminta kata sandi kepada pengguna. Kami tidak merekomendasikan penggunaan kata sandi null, tetapi Anda dapat menentukan kata sandi null dengan menggunakan sepasang tanda kutip ganda yang berdampingan untuk nilai parameter:
-P ""
Penting
Penggunaan -P harus dianggap tidak aman. Hindari memberikan kata sandi pada baris perintah. Atau, gunakan variabel lingkungan SQLCMDPASSWORD atau masukkan kata sandi secara interaktif dengan menghilangkan opsi -P.
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 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 utilitas sqlcmd . Di prompt perintah, ketik:
SET SQLCMDPASSWORD= p@a$$w0rd
Pada prompt perintah berikut, ketik:
sqlcmd
Jika kombinasi nama pengguna dan kata sandi salah, pesan kesalahan akan dibuat.
CATATAN! Variabel lingkungan OSQLPASSWORD disimpan untuk kompatibilitas mundur. Variabel lingkungan SQLCMDPASSWORD lebih diutamakan daripada variabel lingkungan OSQLPASSWORD. Sekarang OSQLPASSWORD tidak lagi dibagikan, utilitas sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.
Jika opsi -P digunakan dengan opsi -E , pesan kesalahan akan dibuat.
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 variabel pembuatan skrip sqlcmd 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 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 Anda 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
Adalah nama login atau nama pengguna database yang terkandung. Untuk pengguna database mandiri, Anda harus menyediakan opsi nama database (-d).
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 mencoba menyambungkan dengan menggunakan mode Microsoft Windows Authentication. Autentikasi didasarkan pada akun Windows pengguna yang menjalankan sqlcmd.
Jika opsi -U digunakan dengan opsi -E (dijelaskan nanti dalam artikel ini), pesan kesalahan akan dibuat. 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 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. Pendekatan 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 akan terlebih dahulu 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 dibuat, dan sqlcmd keluar. sqlcmd tidak mendukung penulisan bersamaan dari beberapa proses sqlcmd ke file yang sama. Output file akan rusak atau salah. Lihat tombol -f juga relevan dengan format file. File ini akan dibuat jika tidak ada. File dengan nama yang sama dari sesi sqlcmd sebelumnya akan ditimpa. File yang ditentukan di sini bukan file stdout . Jika file stdout ditentukan, file ini tidak akan 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. Tidak berpengaruh jika Anda menggunakan -o. Secara default, pesan dikirim ke stdout.
-R
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.
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 (SQL Bertransaksi).
-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.
Di 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 artikel ini.
-Q "kueri cmdline"
Menjalankan kueri saat 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.
Di 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 artikel ini.
-tquery_timeout
Menentukan jumlah detik sebelum perintah (atau pernyataan SQL) kehabisan waktu. Opsi ini mengatur variabel pembuatan skrip sqlcmd 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.
-v var =value[ var =value...]
Membuat variabel pembuatan skrip sqlcmdyang dapat digunakan dalam skrip sqlcmd . Sertakan nilai dalam tanda kutip jika nilai berisi spasi. Anda dapat menentukan beberapa nilai "nilai"var=. 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
Menyebabkan sqlcmd mengabaikan variabel pembuatan skrip. Parameter 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 variabel pembuatan skrip sqlcmd SQLCMDHEADERS. Gunakan -1 untuk menentukan bahwa header tidak 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. Parameter 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 variabel pembuatan skrip sqlcmd 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.
-wscreen_width
Menentukan lebar layar untuk output. Opsi ini mengatur variabel pembuatan skrip sqlcmd 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 menghasilkan pesan kesalahan. Lebar default adalah 80 karakter. Ketika baris output melebihi lebar kolom yang ditentukan, baris tersebut akan dibungkus ke baris berikutnya.
-W
Opsi ini menghapus spasi di belakang 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
Mengatur variabel SQLCMDMAXVARTYPEWIDTHpembuatan skrip sqlcmd . Defaultnya adalah 256. Ini membatasi jumlah karakter yang dikembalikan untuk jenis data panjang variabel besar:
varchar(max)
nvarchar(maks)
varbinary(max)
xml
UDT (jenis data yang ditentukan pengguna)
teks
ntext
gambar
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 akan terpotok.
Penting
Gunakan opsi -y 0 dengan sangat hati-hati karena dapat menyebabkan masalah performa yang serius pada server dan jaringan, tergantung pada ukuran data yang dikembalikan.
-Yfixed_length_type_display_width
Mengatur variabel SQLCMDMAXFIXEDTYPEWIDTHpembuatan 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
Varian
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. Jika opsi -V 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).
Jika skrip sqlcmd berisi komentar yang salah, kesalahan sintaks, atau tidak memiliki variabel 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 variabel pembuatan skrip sqlcmd 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 variabel pembuatan skrip sqlcmd 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.
-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]
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 terpotok 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 opsional c ditentukan, output muncul tanpa baris header Server: , 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 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 berlanjut. Jika parameter opsional 1 ditentukan, sqlcmd menghasilkan pesan kesalahan lalu keluar. Perintah berikut dinonaktifkan saat opsi -X digunakan:
ED
!!Perintah
Jika opsi -X ditentukan, opsi ini 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 variabel pembuatan skrip sqlcmd , lihat Menggunakan sqlcmd dengan Variabel Pembuatan Skrip.
-?
Menampilkan versi sqlcmd dan ringkasan sintaks opsi sqlcmd .
Keterangan
Opsi tidak harus digunakan dalam urutan yang ditunjukkan 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 di prompt perintah dengan salah 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 (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 XY
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 | "" | |
| SQLCMDUSEAAD | -G | R/W | "" |
SQLCMDUSER, SQLCMDPASSWORD, dan SQLCMDSERVER diatur ketika :Koneksi 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
:Koneksi
[:] KELUAR
:Saat Terjadi Kesalahan
:r
:Bantuan
:ServerList
:XML [ON | OFF]
:Setvar
:Listvar
Perhatikan hal-hal berikut saat Anda menggunakan perintah sqlcmd :
Semua perintah sqlcmd , kecuali GO, harus diawali dengan 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, perintah ED harus segera diketik 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> [ "nilai" ]
Mendefinisikan 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, opsi -l mengatur variabel sqlcmd SQLCMDLOGINTIMEOUT.
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 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 dipotok 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 <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 tersebut dipotok 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 tersebut dipotok menjadi nol byte. Perintah Perftrace dapat muncul beberapa kali dalam skrip.
Perintah Kontrol Eksekusi
:Saat Kesalahan[abaikankeluar | ]
Mengatur tindakan yang akan dilakukan ketika terjadi kesalahan selama skrip atau eksekusi batch.
Ketika opsi keluar digunakan, sqlcmd keluar dengan nilai kesalahan yang sesuai.
Ketika opsi abaikan 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 pernyataan SELECT sebagai nilai yang dikembalikan dari sqlcmd. Jika numerik, kolom pertama dari baris hasil terakhir dikonversi menjadi bilangan bulat 4-byte (panjang). MS-DOS, Linux, dan Mac 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:
- :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 akan keluar dan mengembalikan ID pesan kembali ke klien. Contohnya:
RAISERROR(50001, 10, 127)
Kesalahan ini akan menyebabkan skrip sqlcmd berakhir dan mengembalikan ID pesan 50001 ke klien.
Nilai yang dikembalikan -1 hingga -99 dicadangkan oleh SQL Server, dan 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 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 <Filename>
Mengurai pernyataan SQL Transact tambahan dan perintah sqlcmd dari file yang ditentukan oleh <nama> file 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 sqlcmd apa pun. Ini termasuk terminator batch GO.
Catatan
Jumlah baris yang ditampilkan dalam mode interaktif akan ditingkatkan satu per satu untuk setiap :r perintah 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.
:Koneksiserver_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 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. Pengguna tidak diminta 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 perintah 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 tempat sqlcmd berjalan.
:XML [ON | OFF]
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 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 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 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 sqlcmd baru 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 prompt perintah, ketik perintah:
sqlcmd
Pada jenis perintah sqlcmd:
USE AdventureWorks2012;
GO
Saat Anda menekan ENTER, pesan informasi berikut dicetak: "Mengubah konteks database ke 'AdventureWorks2012'."
Format Output dari Kueri SQL Transact
sqlcmd pertama-tama mencetak header kolom yang berisi nama kolom yang ditentukan dalam daftar pemilihan. 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. Pada prompt perintah sqlcmd , ketik kueri:
USE AdventureWorks2012;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Saat Anda menekan ENTER, tataan 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. Ini dapat diubah dengan menggunakan opsi -w , atau dengan mengatur variabel 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 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 perintah XML OFF dikeluarkan karena perintah XML OFF mengalihkan 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 bahwa output aliran XML dijalankan, output akan rusak. Setelah perintah XML ON diterbitkan, Anda tidak dapat menjalankan pernyataan Transact-SQL yang menghasilkan set baris reguler.
Catatan
Perintah :XML tidak mendukung pernyataan SET STATISTICS XML.
JSON Output Format
Ketika Anda mengharapkan output JSON, gunakan perintah berikut: :XML ON. Jika tidak, output menyertakan 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 Azure Active Directory
Contoh menggunakan Autentikasi Azure Active Directory:
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 MyAADPassword -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 NTFS yang sesuai.
Untuk meningkatkan performa, lakukan sebanyak mungkin dalam satu sesi sqlcmd seperti yang Anda bisa, alih-alih dalam serangkaian sesi.
Atur nilai waktu habis untuk eksekusi batch atau 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. Pesan tingkat keparahan 16 menunjukkan kesalahan umum yang dapat dikoreksi oleh pengguna.
Periksa kode keluar dan variabel DOS ERRORLEVEL setelah proses keluar. sqlcmd akan mengembalikan 0 secara normal, jika tidak, itu akan mengatur ERRORLEVEL seperti yang dikonfigurasi 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 nilai tersebut (yaitu SQLCMD) dihentikan, dan nilainya dipengaruhi oleh menentukan argumen baris perintah -b .
Menggunakan -V16 dalam kombinasi dengan memeriksa kode keluar dan DOS ERRORLEVEL dapat membantu menangkap kesalahan di lingkungan otomatis, terutama gerbang kualitas sebelum rilis produksi.
Langkah berikutnya
- Memulai Utilitas sqlcmd
- Menjalankan File Skrip Transact-SQL Menggunakan sqlcmd
- Menggunakan Utilitas sqlcmd
- Menggunakan sqlcmd dengan Variabel Pembuatan Skrip
- Koneksi ke Mesin Database Dengan sqlcmd
- Mengedit Skrip SQLCMD dengan Editor Kueri
- Mengelola Langkah Pekerjaan
- Membuat Langkah Pekerjaan CmdExec
Dapatkan bantuan
- Ide untuk SQL: Memiliki saran untuk meningkatkan SQL Server?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server): Ajukan pertanyaan SQL Server
- Stack Overflow (tag sql-server): Jawaban atas pertanyaan pengembangan SQL
- Reddit: Diskusi umum tentang SQL Server
- Syarat dan Informasi Lisensi Microsoft SQL Server
- Opsi dukungan untuk pengguna bisnis
- Menghubungi Microsoft
- Bantuan dan umpan balik SQL Server tambahan