Menyambungkan dengan sqlcmd

Unduh driver ODBC

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.

-J
Minta ukuran paket.

-B
Hentikan pekerjaan batch jika ada kesalahan.

-cbatch_terminator
Tentukan terminator batch.

-C
Percayai sertifikat server.

-ddatabase_name
Terbitkan USEpernyataan 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.

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

-hnumber_of_rows
Tentukan jumlah baris yang akan dicetak di antara judul kolom.

-H
Tentukan nama stasiun kerja.

-iinput_file[,input_file[,...]]
Identifikasi file yang berisi batch pernyataan SQL atau prosedur tersimpan.

-I
Atur SET QUOTED_IDENTIFIER opsi koneksi ke AKTIF.

-K
Hapus atau ganti karakter kontrol.

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

-lbatas waktu
Tentukan jumlah detik sebelum sqlcmd waktu masuk habis saat Anda mencoba menyambungkan ke server.

-merror_level
Mengontrol pesan kesalahan mana yang dikirim ke stdout.

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

-ooutput_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

-qcommandline_query
Jalankan kueri saat sqlcmd dimulai, tetapi tidak keluar saat kueri selesai berjalan.

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

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

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

-Verror_severity_level
Kontrol tingkat keparahan yang digunakan untuk mengatur variabel ERRORLEVEL.

-wcolumn_width
Tentukan lebar layar untuk output.

-W
Hapus spasi berikutnya dari kolom.

-X
Nonaktifkan substitusi variabel.

-X
Nonaktifkan perintah, skrip startup, dan variabel lingkungan.

-yvariable_length_type_display_width
Atur sqlcmd variabel SQLCMDMAXFIXEDTYPEWIDTHpembuatan skrip .

-Yfixed_length_type_display_width
Atur sqlcmd variabel SQLCMDMAXVARTYPEWIDTHpembuatan 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:

  • [:]!!

  • :Koneksi

  • Kesalahan:

  • [:] KELUAR

  • GO [hitung]

  • Bantuan:

  • :Daftar

  • :Listvar

  • :Pada Kesalahan

  • :Out ekspres

  • :P erftrace

  • [:] BERHENTI

  • :R

  • :RESET

  • :setvar

Opsi tidak tersedia

Dalam rilis saat ini, opsi berikut tidak tersedia:

-J
Masuk ke SQL Server dengan administrator khusus Koneksi ion (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 :Koneksi) jika Anda menentukan -D. -Dmenyebabkan 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 String DSN dan Koneksi ion 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 Driver 17 untuk 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_Koneksi ion=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".

Baca juga

Koneksi dengan bcp
Catatan rilis