Menyambungkan dengan sqlcmd
Utilitas sqlcmd tersedia dengan Microsoft ODBC Driver untuk SQL Server di Linux dan macOS.
Perintah berikut menunjukkan cara menggunakan Autentikasi Windows (Kerberos) dan Autentikasi SQL Server, masing-masing:
sqlcmd -E -Sxxx.xxx.xxx.xxx
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx
Opsi yang tersedia
Opsi berikut tersedia di sqlcmd di Linux dan macOS:
-?
Tampilkan sqlcmd
penggunaan.
-sebuah
Minta ukuran paket.
-b
Hentikan pekerjaan batch jika ada kesalahan.
-c batch_terminator
Tentukan terminator batch.
-C
Percayai sertifikat server.
-d database_name
Terbitkan USE
pernyataan database_name saat Anda memulai sqlcmd
.
-D
Menyebabkan nilai yang diteruskan ke sqlcmd
opsi -S ditafsirkan sebagai nama sumber data (DSN). Untuk informasi selengkapnya, lihat "Dukungan DSN di sqlcmd
dan bcp
" di akhir artikel ini.
-e
Tulis skrip input ke perangkat output standar (stdout).
-E
Gunakan koneksi tepercaya (autentikasi terintegrasi.) Untuk informasi selengkapnya tentang membuat koneksi tepercaya yang menggunakan autentikasi terintegrasi dari klien Linux atau macOS, lihat Menggunakan Autentikasi Terintegrasi.
-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 Linux yang diinstal. (tersedia sejak 17.5.1.1)
-G
Sakelar ini digunakan oleh klien saat menyambungkan ke Azure SQL Database, Azure SQL Managed Instance, atau Azure Synapse Analytics untuk menentukan bahwa pengguna diautentikasi dengan ID Microsoft Entra (sebelumnya Azure Active Directory). Ini dapat dikombinasikan hanya dengan opsi -P untuk menggunakan autentikasi token akses (v17.8+). Opsi ini mengatur variabel pembuatan skrip sqlcmd SQLCMDUSEAAD = true. Sakelar -G
memerlukan setidaknya sqlcmd versi 17.6. Untuk menentukan versi Anda, jalankan sqlcmd -?
.
Penting
Opsi -G hanya berlaku untuk Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics.
Autentikasi interaktif Microsoft Entra saat ini tidak didukung di Linux atau macOS. Autentikasi terintegrasi Microsoft Entra memerlukan Microsoft ODBC Driver 17 untuk SQL Server versi 17.6.1 atau yang lebih tinggi dan lingkungan Kerberos yang dikonfigurasi dengan benar.
-h number_of_rows
Tentukan jumlah baris yang akan dicetak di antara judul kolom.
-H
Tentukan nama stasiun kerja.
-i input_file[,input_file[,...]]
Identifikasi file yang berisi batch pernyataan SQL atau prosedur tersimpan.
-Saya
Atur SET QUOTED_IDENTIFIER
opsi koneksi ke AKTIF.
-k
Hapus atau ganti karakter kontrol.
-K application_intent
Menyatakan jenis beban kerja aplikasi saat menyambungkan ke server. Satu-satunya nilai yang saat ini didukung adalah ReadOnly. Jika -K tidak ditentukan, sqlcmd
tidak mendukung konektivitas ke replika sekunder dalam grup ketersediaan AlwaysOn. Untuk informasi selengkapnya, lihat Driver ODBC di Linux dan macOS - Ketersediaan Tinggi dan Pemulihan Bencana.
Catatan
-K tidak didukung di CTP untuk SUSE Linux. Namun, Anda dapat menentukan kata kunci ApplicationIntent=ReadOnly dalam file DSN yang diteruskan ke sqlcmd
. Untuk informasi selengkapnya, lihat "Dukungan DSN di sqlcmd
dan bcp
" di akhir artikel ini.
-l batas waktu
Tentukan jumlah detik sebelum sqlcmd
waktu masuk habis saat Anda mencoba menyambungkan ke server.
-m error_level
Mengontrol pesan kesalahan mana yang dikirim ke stdout.
-M multisubnet_failover
Selalu tentukan -M saat menyambungkan ke pendengar grup ketersediaan grup ketersediaan SQL Server 2012 (11.x) grup ketersediaan atau Instans Kluster Failover SQL Server 2012 (11.x). -M menyediakan deteksi failover dan koneksi yang lebih cepat ke server aktif (saat ini). Jika -M tidak ditentukan, -M nonaktif. Untuk informasi selengkapnya tentang grup ketersediaan AlwaysOn, lihat Driver ODBC di Linux dan macOS - Ketersediaan Tinggi dan Pemulihan Bencana.
Catatan
-M tidak didukung di CTP untuk SUSE Linux. Namun, Anda dapat menentukan kata kunci MultiSubnetFailover=Ya dalam file DSN yang diteruskan ke sqlcmd
. Untuk informasi selengkapnya, lihat "Dukungan DSN di sqlcmd
dan bcp
" di akhir artikel ini.
-N[s|m|o]
Atur mode enkripsi koneksi menjadi Ketat, Wajib, atau Opsional masing-masing. Default ke wajib jika tidak ditentukan. ([s|m|o]
ditambahkan dalam sqlcmd 18.0)
-o output_file
Identifikasi file yang menerima output dari sqlcmd
.
-p
Cetak statistik performa untuk setiap tataan hasil.
-P
Tentukan kata sandi pengguna. Saat digunakan dengan opsi -G tanpa -U, menentukan file yang berisi token akses (v17.8+). File token harus dalam format UTF-16LE (tanpa BOM).
Token akses dapat diperoleh melalui berbagai metode. Penting untuk memastikan token akses benar byte-for-byte, karena akan dikirim apa adanya. Di bawah ini adalah contoh perintah yang mendapatkan token akses. Perintah ini menggunakan perintah Azure CLI dan Linux dan menyimpannya ke file dalam format yang tepat. Jika pengodean default sistem atau terminal Anda bukan ASCII atau UTF-8, Anda mungkin perlu menyesuaikan iconv
opsi. Pastikan untuk mengamankan file yang dihasilkan dengan hati-hati dan menghapusnya saat tidak lagi diperlukan.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-q commandline_query
Jalankan kueri saat sqlcmd
dimulai, tetapi tidak keluar saat kueri selesai berjalan.
-Q commandline_query
Jalankan kueri saat sqlcmd
dimulai. sqlcmd
akan keluar ketika kueri selesai.
-r
Mengalihkan pesan kesalahan ke stderr.
-R
Menyebabkan driver menggunakan pengaturan regional klien untuk mengonversi data mata uang dan tanggal dan waktu menjadi data karakter. Saat ini hanya menggunakan pemformatan en_US (Bahasa Inggris AS).
-s column_separator_char
Tentukan karakter pemisah kolom.
-S [protokol:] server[,port]
Tentukan instans SQL Server yang akan disambungkan, atau jika -D digunakan, DSN. Driver ODBC di Linux dan macOS memerlukan -S. Satu-satunya nilai protokol yang valid adalah tcp.
-t query_timeout
Tentukan jumlah detik sebelum perintah (atau pernyataan SQL) kehabisan waktu.
-u
Tentukan bahwa output_file disimpan dalam format Unicode, apa pun format input_file.
-U
login_id Tentukan ID masuk pengguna.
-V error_severity_level
Kontrol tingkat keparahan yang digunakan untuk mengatur variabel ERRORLEVEL.
-w column_width
Tentukan lebar layar untuk output.
-W
Hapus spasi berikutnya dari kolom.
-x
Nonaktifkan substitusi variabel.
-X
Nonaktifkan perintah, skrip startup, dan variabel lingkungan.
-y variable_length_type_display_width
Atur sqlcmd
variabel SQLCMDMAXFIXEDTYPEWIDTH
pembuatan skrip .
-Y fixed_length_type_display_width
Atur sqlcmd
variabel SQLCMDMAXVARTYPEWIDTH
pembuatan skrip .
Kata sandi -z
Ubah kata sandi.
Kata sandi -Z
Ubah kata sandi dan keluar.
Perintah yang tersedia
Dalam rilis saat ini, perintah berikut tersedia:
[:]!!
:Sambung
Kesalahan:
[:] KELUAR
GO [hitung]
Bantuan:
:Daftar
:Listvar
:Pada Kesalahan
:Keluar
:P erftrace
[:] BERHENTI
:r
:RESET
:setvar
Opsi tidak tersedia
Dalam rilis saat ini, opsi berikut tidak tersedia:
-Sebuah
Masuk ke SQL Server dengan Koneksi Administrator Khusus (DAC). Untuk informasi tentang cara membuat koneksi administrator khusus (DAC), lihat Panduan Pemrograman.
-L
Cantumkan komputer server yang dikonfigurasi secara lokal, dan nama komputer server yang disiarkan di jaringan.
-v
Buat sqlcmd
variabel pembuatan skrip yang dapat digunakan dalam sqlcmd
skrip.
Anda dapat menggunakan metode alternatif berikut: Letakkan parameter di dalam satu file, yang kemudian dapat Anda tambahkan ke file lain. Metode ini akan membantu Anda menggunakan file parameter untuk mengganti nilai. Misalnya, buat file yang disebut a.sql
(file parameter) dengan konten berikut:
:setvar ColumnName object_id
:setvar TableName sys.objects
Kemudian buat file bernama b.sql
, dengan parameter untuk penggantian:
SELECT $(ColumnName) FROM $(TableName)
Pada baris perintah, gabungkan a.sql
dan b.sql
ke dalam c.sql
menggunakan perintah berikut:
cat a.sql > c.sql
cat b.sql >> c.sql
Jalankan sqlcmd
dan gunakan c.sql
sebagai file input:
sqlcmd -S<...> -P<..> -U<..> -I c.sql
Perintah tidak tersedia
Dalam rilis saat ini, perintah berikut tidak tersedia:
:ED
:ServerList
:XML
Dukungan DSN dalam sqlcmd dan bcp
Anda dapat menentukan nama sumber data (DSN) alih-alih nama server dalam opsi sqlcmd atau bcp -S
(atau perintah sqlcmd :Connect) jika Anda menentukan -D
. -D
menyebabkan sqlcmd atau bcp tersambung ke server yang ditentukan dalam DSN dengan -S
opsi .
DSN sistem disimpan dalam odbc.ini
file di direktori ODBC SysConfigDir (/etc/odbc.ini
pada penginstalan standar). DSN pengguna disimpan di .odbc.ini
direktori beranda pengguna (~/.odbc.ini
).
Pada sistem Windows, DSN Sistem dan Pengguna disimpan dalam registri dan dikelola melalui odbcad32.exe. DSN file tidak didukung oleh bcp dan sqlcmd.
Lihat Kata Kunci dan Atribut DSN dan String Koneksi untuk daftar entri yang didukung driver.
Dalam DSN, hanya entri DRIVER yang diperlukan, tetapi untuk terhubung ke server jarak jauh, sqlcmd
atau bcp
memerlukan nilai dalam elemen SERVER. Jika elemen SERVER kosong atau tidak ada di DSN, sqlcmd
dan bcp
akan mencoba menyambungkan ke instans default pada sistem lokal.
Saat menggunakan bcp pada sistem Windows, SQL Server 2017 (14.x) dan yang lebih lama memerlukan driver SQL Native Client 11 (sqlncli11.dll) sementara SQL Server 2019 (15.x) dan yang lebih tinggi memerlukan Driver Microsoft ODBC 17 untuk driver SQL Server (msodbcsql17.dll).
Jika opsi yang sama ditentukan di DSN dan sqlcmd
baris perintah atau bcp
, opsi baris perintah akan mengambil alih nilai yang digunakan dalam DSN. Misalnya, jika DSN memiliki entri DATABASE dan sqlcmd
baris perintah menyertakan -d, nilai yang diteruskan ke -d digunakan. Jika Trusted_Connection=ya ditentukan dalam DSN, autentikasi Kerberos digunakan dan nama pengguna (-U) dan kata sandi (-P), jika disediakan, diabaikan.
Skrip yang ada yang memanggil dapat dimodifikasi isql
untuk digunakan sqlcmd
dengan menentukan alias berikut: alias isql="sqlcmd -D"
.