Utilitas sqlcmd

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Utilitas sqlcmd memungkinkan Anda memasukkan pernyataan Transact-SQL, prosedur sistem, dan file skrip melalui berbagai mode:

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

Catatan

Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.

Cari tahu versi mana yang telah Anda instal

Ada dua versi sqlcmd:

  • go-mssqldbSqlcmd berbasis, terkadang ditata sebagai go-sqlcmd. Versi ini adalah alat mandiri yang dapat Anda unduh secara independen dari SQL Server.

  • Sqlcmd berbasis ODBC, tersedia dengan SQL Server atau Utilitas Baris Perintah Microsoft, dan bagian mssql-tools dari paket di Linux.

Untuk menentukan versi yang telah Anda instal, jalankan pernyataan berikut di baris perintah:

sqlcmd "-?"
sqlcmd "-?"
sqlcmd -?

Jika Anda menggunakan versi baru sqlcmd (Go), outputnya mirip dengan contoh berikut:

Version: 1.3.1

Memeriksa versi

Anda dapat menggunakan sqlcmd --version untuk menentukan versi mana yang diinstal. Anda harus menginstal setidaknya versi 1.0.0.

Catatan

Untuk SQL Server 2014 (12.x) dan versi sebelumnya, lihat utilitas sqlcmd.

Untuk menggunakan sqlcmd di Linux, lihat Menginstal sqlcmd dan bcp di Linux.

Penting

Menginstal sqlcmd (Go) melalui manajer paket akan menggantikan sqlcmd (ODBC) dengan sqlcmd (Go) di jalur lingkungan Anda. Setiap sesi baris perintah saat ini perlu ditutup dan dibuka kembali agar ini berlaku. sqlcmd (ODBC) tidak akan dihapus dan masih dapat digunakan dengan menentukan jalur lengkap ke executable. Anda juga dapat memperbarui variabel Anda PATH untuk menunjukkan mana yang akan diutamakan. Untuk melakukannya di Windows 11, buka Pengaturan sistem dan buka Tentang > pengaturan sistem Tingkat Lanjut. Saat Properti Sistem terbuka, pilih tombol Variabel Lingkungan. Di bagian bawah, di bawah Variabel sistem, pilih Jalur lalu pilih Edit. Jika lokasi sqlcmd (Go) disimpan ke (C:\Program Files\sqlcmd adalah default) tercantum sebelum C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn, maka sqlcmd (Go) digunakan. Anda dapat membalikkan urutan untuk membuat sqlcmd (ODBC) menjadi default lagi.

Mengunduh dan menginstal sqlcmd

sqlcmd (Go) dapat diinstal lintas platform, di Microsoft Windows, macOS, dan Linux.

winget (Pengelola Paket Windows CLI)

  1. Instal Klien Pengelola Paket Windows jika Anda belum memilikinya.

  2. Jalankan perintah berikut untuk menginstal sqlcmd (Go).

    winget install sqlcmd
    

Chocolatey

  1. Pasang Chocolatey jika Anda belum memilikinya.

  2. Jalankan perintah berikut untuk menginstal sqlcmd (Go).

    choco install sqlcmd
    

Unduhan langsung

  1. Unduh yang -windows-x64.zip sesuai atau -windows-arm.zip aset dari rilis terbaru sqlcmd (Go) dari repositori kode GitHub.

  2. sqlcmd.exe Ekstrak file dari folder zip yang diunduh.

Sudah diinstal sebelumnya

Azure Cloud Shell

Anda dapat mencoba utilitas sqlcmd dari Azure Cloud Shell, karena telah diinstal sebelumnya secara default:

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 SQL Server Management Studio (SSMS), pilih Mode SQLCMD dari daftar dropdown Menu Kueri navigasi atas.

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 di SQLCMD Mode dan di utilitas sqlcmd .

Sintaks

Usage:
  sqlcmd [flags]
  sqlcmd [command]

Examples:
# Install/Create, Query, Uninstall SQL Server
  sqlcmd create mssql --accept-eula --using https://aka.ms/AdventureWorksLT.bak
  sqlcmd open ads
  sqlcmd query "SELECT @@version"
  sqlcmd delete
# View configuration information and connection strings
  sqlcmd config view
  sqlcmd config cs

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  config      Modify sqlconfig files using subcommands like "sqlcmd config use-context mssql"
  create      Install/Create SQL Server, Azure SQL, and Tools
  delete      Uninstall/Delete the current context
  help        Help about any command
  open        Open tools (e.g ADS) for current context
  query       Run a query against the current context
  start       Start current context
  stop        Stop current context

Flags:
  -?, --?                  help for backwards compatibility flags (-S, -U, -E etc.)
  -h, --help               help for sqlcmd
      --sqlconfig string   configuration file (default "/Users/<currentUser>/.sqlcmd/sqlconfig")
      --verbosity int      log level, error=0, warn=1, info=2, debug=3, trace=4 (default 2)
      --version            print version of sqlcmd

Use "sqlcmd [command] --help" for more information about a command.

Untuk informasi lebih mendalam tentang sintaks dan penggunaan sqlcmd , lihat sintaks sqlcmd ODBC.

Melanggar perubahan dari sqlcmd (ODBC)

Beberapa sakelar dan perilaku diubah dalam utilitas sqlcmd (Go). Untuk daftar terbaru bendera yang hilang untuk kompatibilitas mundur, kunjungi diskusi Prioritaskan implementasi bendera back-compat GitHub.

  • Dalam versi sqlcmd (Go) yang lebih lama, -P sakelar dihapus sementara, dan kata sandi untuk Autentikasi SQL Server hanya dapat disediakan melalui mekanisme ini:

    • Variabel SQLCMDPASSWORD lingkungan
    • Perintah :CONNECT
    • Ketika diminta, pengguna dapat mengetik kata sandi untuk menyelesaikan koneksi
  • -r0 memerlukan argumen atau 1

  • -R sakelar dihapus.

  • -I sakelar dihapus. Untuk menonaktifkan perilaku pengidentifikasi yang dikutip, tambahkan SET QUOTED IDENTIFIER OFF skrip Anda.

  • -N sekarang mengambil nilai string yang bisa menjadi salah satu dari true, false, atau disable untuk menentukan pilihan enkripsi. (default sama dengan menghilangkan parameter)

    • Jika -N dan -C tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server.
    • Jika -N disediakan tetapi -C tidak, sqlcmd memerlukan validasi sertifikat server. false Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk.
    • Jika keduanya -N dan -C disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi.
    • Informasi selengkapnya tentang negosiasi enkripsi klien/server dapat ditemukan di MS-TDS PRELOGIN.
  • -u File output Unicode yang dihasilkan memiliki tanda urutan Byte (BOM) Little-Endian UTF-16 yang ditulis ke dalamnya.

  • Beberapa perilaku yang disimpan untuk mempertahankan kompatibilitas dengan OSQL dapat diubah, seperti perataan header kolom untuk beberapa jenis data.

  • Semua perintah harus pas pada satu baris, bahkan EXIT. Mode interaktif tidak memeriksa tanda kurung terbuka atau tanda kutip untuk perintah, dan tidak meminta baris berturut-turut. Perilaku ini berbeda dengan versi ODBC, yang memungkinkan kueri dijalankan oleh EXIT(query) untuk menjangkau beberapa baris.

Koneksi dari utilitas sqlcmd (Go) terbatas pada koneksi TCP. Pipa bernama tidak didukung saat ini di go-mssqldb driver.

Peningkatan

  • :Connectsekarang memiliki parameter opsional -G untuk memilih salah satu metode autentikasi untuk Azure SQL Database - , SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegratedActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentity, ActiveDirectoryPassword. Untuk informasi selengkapnya, lihat Autentikasi Microsoft Entra. Jika -G tidak disediakan, Keamanan terintegrasi atau autentikasi SQL Server digunakan, tergantung pada keberadaan -U parameter nama pengguna.

  • Parameter baris perintah baru --driver-logging-level memungkinkan Anda melihat jejak dari go-mssqldb driver. Gunakan 64 untuk melihat semua jejak.

  • sqlcmd sekarang dapat mencetak hasil menggunakan format vertikal. Gunakan sakelar baris perintah baru -F vertical untuk mengaturnya. Variabel SQLCMDFORMAT pembuatan skrip juga mengontrolnya.

Opsi baris perintah

-J

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 -G opsi . Saat menyambungkan ke Azure SQL Database menggunakan -A, Anda harus menjadi administrator di server SQL logis. DAC tidak tersedia untuk administrator Microsoft Entra.

-C

Opsi ini digunakan oleh klien untuk mengonfigurasinya untuk secara implisit mempercayai sertifikat server tanpa validasi. Opsi ini setara dengan opsi TRUSTSERVERCERTIFICATE = trueADO.NET .

Untuk utilitas sqlcmd (Go), kondisi berikut juga berlaku:

  • Jika -N dan -C tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server.
  • Jika -N disediakan tetapi -C tidak, sqlcmd memerlukan validasi sertifikat server. false Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk.
  • Jika keduanya -N dan -C disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi.

-d db_name

USE <db_name> Mengeluarkan pernyataan saat Anda memulai sqlcmd. Opsi ini mengatur variabel SQLCMDDBNAMEpembuatan skrip sqlcmd . Parameter ini menentukan database awal. Defaultnya adalah properti database default login Anda. Jika database tidak ada, pesan kesalahan dihasilkan dan sqlcmd keluar.

-D

Menginterpretasikan nama server yang disediakan sebagai -S DSN alih-alih nama host. Untuk informasi selengkapnya, lihat Dukungan DSN di sqlcmd dan bcp dalam Koneksi dengan sqlcmd.

Catatan

Opsi -D ini hanya tersedia di klien Linux dan macOS. Pada klien Windows, sebelumnya mengacu pada opsi sekarang usang yang telah dihapus dan diabaikan.

-l login_timeout

Menentukan jumlah detik sebelum masuk sqlcmd ke driver ODBC kehabisan waktu ketika Anda mencoba menyambungkan ke server. Opsi ini mengatur variabel SQLCMDLOGINTIMEOUTpembuatan skrip sqlcmd . Batas waktu default untuk masuk ke sqlcmd adalah 8 detik. Saat menggunakan -G opsi untuk menyambungkan ke Azure SQL Database atau Azure Synapse Analytics dan mengautentikasi menggunakan ID Microsoft Entra, nilai batas waktu setidaknya 30 detik disarankan. Waktu masuk habis harus berupa angka antara 0 dan 65534. Jika nilai yang disediakan bukan numerik, atau tidak termasuk dalam rentang tersebut, sqlcmd menghasilkan pesan kesalahan. Nilai 0 menentukan batas waktu 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 mengabaikan -E kemungkinan pengaturan variabel lingkungan nama pengguna dan kata sandi seperti SQLCMDPASSWORD. -E Jika opsi digunakan bersama dengan -U opsi atau -P opsi , pesan kesalahan akan dihasilkan.

-G

Mengatur pengaturan Enkripsi Kolom ke Enabled. Untuk informasi selengkapnya, lihat Always Encrypted. Hanya kunci master yang disimpan di Penyimpanan Sertifikat Windows yang didukung. Opsi ini -g memerlukan setidaknya sqlcmd versi 13.1. Untuk menentukan versi Anda, jalankan sqlcmd -?.

-G

Opsi ini digunakan oleh klien saat menyambungkan ke Azure SQL Database atau Azure Synapse Analytics untuk menentukan bahwa pengguna diautentikasi menggunakan autentikasi Microsoft Entra. Opsi ini mengatur variabel SQLCMDUSEAAD = truepembuatan skrip sqlcmd . Opsi ini -G memerlukan setidaknya sqlcmd versi 13.1. Untuk menentukan versi Anda, jalankan sqlcmd -?. Untuk informasi selengkapnya, lihat Koneksi ke SQL Database atau Azure Synapse Analytics Dengan Menggunakan autentikasi Microsoft Entra. Opsi -A tidak didukung dengan -G opsi .

Opsi -G ini hanya berlaku untuk Azure SQL Database 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.

Untuk informasi selengkapnya tentang autentikasi Microsoft Entra, lihat Autentikasi Microsoft Entra di sqlcmd.

-H workstation_name

Nama stasiun kerja. Opsi ini mengatur variabel SQLCMDWORKSTATIONpembuatan skrip sqlcmd . Nama stasiun kerja tercantum dalam hostname kolom sys.sysprocesses tampilan katalog, dan dapat dikembalikan menggunakan prosedur sp_whotersimpan . Jika opsi ini tidak ditentukan, defaultnya adalah nama komputer saat ini. Nama ini dapat digunakan untuk mengidentifikasi sesi sqlcmd yang berbeda.

-J

Mencetak pesan kesalahan mentah ke layar.

-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. Untuk informasi selengkapnya, lihat Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn).

-M multisubnet_failover

Selalu tentukan -M saat menyambungkan ke pendengar grup ketersediaan grup ketersediaan SQL Server atau Instans Kluster Failover SQL Server. -M menyediakan deteksi dan koneksi yang lebih cepat ke server aktif (saat ini). Jika -M tidak ditentukan, -M tidak aktif. Untuk informasi selengkapnya tentang Listener, Koneksi ivity 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

Opsi ini digunakan oleh klien untuk meminta koneksi terenkripsi.

Untuk utilitas -N sqlcmd (Go), sekarang mengambil nilai string yang dapat menjadi salah satu dari true, false, atau disable untuk menentukan pilihan enkripsi. (default sama dengan menghilangkan parameter):

  • Jika -N dan -C tidak disediakan, sqlcmd menegosiasikan autentikasi dengan server tanpa memvalidasi sertifikat server.
  • Jika -N disediakan tetapi -C tidak, sqlcmd memerlukan validasi sertifikat server. false Nilai untuk enkripsi masih dapat menyebabkan enkripsi paket masuk.
  • Jika keduanya -N dan -C disediakan, sqlcmd menggunakan nilainya untuk negosiasi enkripsi.

Kata sandi -P

Kata sandi yang ditentukan pengguna. Kata sandi peka huruf besar/kecil. -U Jika opsi digunakan dan -P opsi tidak digunakan, dan SQLCMDPASSWORD variabel lingkungan belum diatur, sqlcmd meminta kata sandi kepada pengguna. Kami tidak merekomendasikan penggunaan kata sandi null (kosong), tetapi Anda dapat menentukan kata sandi null dengan menggunakan sepasang tanda kutip ganda yang berdampingan untuk nilai parameter ("").

Penting

Penggunaan -P harus dianggap tidak aman. Hindari memberikan kata sandi pada baris perintah. Atau, gunakan SQLCMDPASSWORD variabel lingkungan, atau masukkan kata sandi secara interaktif dengan menghilangkan -P opsi .

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 SQLCMDPASSWORD lingkungan 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 SQLCMDPASSWORD mengatur variabel pada prompt perintah lalu mengakses utilitas sqlcmd .

Pada command prompt, ketik:

SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd

Jika kombinasi nama pengguna dan kata sandi salah, pesan kesalahan akan dihasilkan.

Catatan

Variabel OSQLPASSWORD lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDPASSWORD lingkungan lebih diutamakan daripada OSQLPASSWORD variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.

-P Jika opsi digunakan dengan -E opsi , pesan kesalahan akan dihasilkan.

-P Jika opsi diikuti oleh lebih dari satu argumen, pesan kesalahan dihasilkan dan program keluar.

Kata sandi yang berisi karakter khusus dapat menghasilkan pesan kesalahan. Anda harus menghindari karakter khusus saat menggunakan -P, atau menggunakan variabel lingkungan sebagai gantinya SQLCMDPASSWORD .

-S [protocol:]server[\instance_name][,port]

Menentukan instans SQL Server yang akan disambungkan. Ini mengatur variabel SQLCMDSERVERpembuatan skrip sqlcmd .

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 memulai sqlcmd, SQL Server akan memeriksa dan menggunakan SQLCMDSERVER variabel lingkungan.

Catatan

Variabel OSQLSERVER lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDSERVER lingkungan lebih diutamakan daripada OSQLSERVER variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.

-U login_id

Nama login atau nama pengguna database yang terkandung. Untuk pengguna database mandiri, Anda harus menyediakan opsi nama database (-d).

Catatan

Variabel OSQLUSER lingkungan telah disimpan untuk kompatibilitas mundur. Variabel SQLCMDUSER lingkungan lebih diutamakan daripada OSQLUSER variabel lingkungan. Ini berarti bahwa sqlcmd dan osql dapat digunakan di samping satu sama lain tanpa gangguan. Skrip lama akan terus berfungsi.

Jika Anda tidak menentukan -U opsi atau -P opsi , sqlcmd mencoba menyambungkan dengan menggunakan mode Autentikasi Windows. Autentikasi didasarkan pada akun Windows pengguna yang menjalankan sqlcmd.

-U Jika opsi digunakan dengan -E opsi (dijelaskan nanti dalam artikel ini), pesan kesalahan akan dihasilkan. -U Jika opsi diikuti oleh lebih dari satu argumen, pesan kesalahan dihasilkan dan program keluar.

-z new_password

Ubah kata sandi:

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

-Z new_password

Ubah kata sandi dan keluar:

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

Opsi input/output

-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]

Menentukan halaman kode input dan output. Nomor codepage adalah nilai numerik yang menentukan halaman kode Windows yang diinstal.

Aturan konversi halaman kode:

  • Jika tidak ada halaman kode yang ditentukan, sqlcmd 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. -u Jika opsi telah ditentukan, outputnya selalu Unicode little-endian.

  • Jika tidak ada file output yang ditentukan, halaman kode output adalah halaman kode konsol. Pendekatan ini memungkinkan output ditampilkan dengan benar di konsol.

  • Beberapa file input diasumsikan dari halaman kode yang sama. File input Unicode dan non-Unicode dapat dicampur.

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

-i input_file[,input_file2...]

Mengidentifikasi file yang berisi batch pernyataan Transact-SQL atau prosedur tersimpan. Beberapa file dapat ditentukan yang dibaca dan diproses secara berurutan. Jangan gunakan spasi apa pun di antara nama file. sqlcmd memeriksa terlebih dahulu untuk melihat apakah semua file yang ditentukan ada. Jika satu atau beberapa file tidak ada, sqlcmd akan keluar. Dan -i-Q/-q opsinya 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:

sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>

-o output_file

Mengidentifikasi file yang menerima output dari sqlcmd.

Jika -u ditentukan, output_file disimpan dalam format Unicode. Jika nama file tidak valid, pesan kesalahan dibuat, dan sqlcmd keluar. sqlcmd tidak mendukung penulisan bersamaan dari beberapa proses sqlcmd ke file yang sama. Output file rusak atau salah. Opsi -f ini juga relevan dengan format file. File ini dibuat jika tidak ada. File dengan nama yang sama dari sesi sqlcmd sebelumnya ditimpa. File yang ditentukan di sini bukan stdout file. stdout Jika file ditentukan, file ini tidak 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. Opsi ini tidak berpengaruh jika Anda menggunakan -o. Secara default, pesan dikirim ke stdout.

Catatan

Untuk utilitas -r sqlcmd (Go), memerlukan 0 argumen atau 1 .

R-

Berlaku untuk: ODBC sqlcmd saja.

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.

Catatan

Untuk utilitas sqlcmd (Go), file output Unicode yang dihasilkan memiliki tanda urutan Byte (BOM) Little-Endian UTF-16 yang ditulis ke dalamnya.

Opsi eksekusi kueri

-E

Menulis skrip input ke perangkat output standar (stdout).

I-

Berlaku untuk: ODBC sqlcmd saja.

SET QUOTED_IDENTIFIER Mengatur opsi koneksi ke ON. Secara default, diatur ke OFF. Untuk informasi selengkapnya, lihat SET QUOTED_IDENTIFIER (Transact-SQL).

Catatan

Untuk menonaktifkan perilaku pengidentifikasi yang dikutip di utilitas sqlcmd (Go), tambahkan SET QUOTED IDENTIFIER OFF dalam skrip Anda.

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

Pada command prompt, ketik:

sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -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 di tempat lain dalam artikel ini.

-Q "kueri cmdline"

Menjalankan kueri ketika 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.

Pada command prompt, ketik:

sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2022 -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 di tempat lain dalam artikel ini.

-t query_timeout

Menentukan jumlah detik sebelum perintah (atau pernyataan Transact-SQL) kehabisan waktu. Opsi ini mengatur variabel SQLCMDSTATTIMEOUTpembuatan skrip sqlcmd . Jika nilai query_timeout tidak ditentukan, perintah tidak kehabisan waktu. query_timeout harus berupa angka antara 1 dan 65534. Jika nilai yang disediakan bukan numerik atau tidak termasuk dalam rentang tersebut, sqlcmd menghasilkan pesan kesalahan.

Catatan

Nilai waktu habis aktual dapat bervariasi dari nilai query_timeout yang ditentukan selama beberapa detik.

-v var = value [ var = value... ]

Membuat variabel pembuatan skrip sqlcmd yang dapat digunakan dalam skrip sqlcmd. Sertakan nilai dalam tanda kutip jika nilai berisi spasi. Anda dapat menentukan beberapa <var>="<value>" nilai. 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"
sqlcmd -v MyVar1=something MyVar2="some thing"

sqlcmd -v MyVar1=something -v MyVar2="some thing"
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 INSERT pernyataan yang mungkin berisi string yang memiliki format yang sama dengan variabel reguler, seperti $(<variable_name>).

Opsi format

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 SQLCMDHEADERSpembuatan skrip sqlcmd . Gunakan -1 untuk menentukan bahwa header tidak dicetak. Nilai apa pun yang tidak valid menyebabkan sqlcmd menghasilkan pesan kesalahan lalu keluar.

-k [1 | 2]

Menghapus semua karakter kontrol, seperti tab dan karakter baris baru dari output. Parameter ini mempertahankan pemformatan kolom saat data dikembalikan.

  • -k menghapus karakter kontrol.
  • -k1 mengganti setiap karakter kontrol dengan spasi.
  • -k2 mengganti karakter kontrol berturut-turut dengan satu spasi.

-s col_separator

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

-w screen_width

Menentukan lebar layar untuk output. Opsi ini mengatur variabel SQLCMDCOLWIDTHpembuatan skrip sqlcmd . 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, garis tersebut akan dibungkus ke baris berikutnya.

-W

Opsi ini menghapus spasi berikutnya dari kolom. Gunakan opsi ini bersama dengan -s opsi saat menyiapkan data yang akan diekspor ke aplikasi lain. Tidak dapat digunakan dengan -y opsi atau -Y .

-y variable_length_type_display_width

Mengatur variabel SQLCMDMAXVARTYPEWIDTHpembuatan skrip sqlcmd . Default adalah 256. Ini membatasi jumlah karakter yang dikembalikan untuk jenis data panjang variabel besar:

  • varchar(max)
  • nvarchar(maks)
  • varbinary(max)
  • xml
  • jenis data yang ditentukan pengguna (UDT)
  • text
  • ntext
  • gambar

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.

Perhatian

-y 0 Gunakan opsi dengan sangat hati-hati, karena dapat menyebabkan masalah performa yang signifikan pada server dan jaringan, tergantung pada ukuran data yang dikembalikan.

-Y fixed_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
  • aql_variant

Opsi pelaporan kesalahan

-B

Menentukan bahwa sqlcmd keluar dan mengembalikan DOS ERRORLEVEL nilai saat terjadi kesalahan. Nilai yang dikembalikan ke ERRORLEVEL variabel 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 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 pembuatan skrip, yang ERRORLEVEL dikembalikan adalah 1.

-m error_level

Mengontrol pesan kesalahan mana yang dikirim ke stdout. Pesan yang memiliki tingkat keparahan lebih besar dari atau sama dengan tingkat ini dikirim. Ketika nilai ini diatur ke -1, semua pesan termasuk pesan informasi, dikirim. Spasi tidak diperbolehkan antara -m dan -1. Misalnya, -m-1 valid, dan -m -1 tidak.

Opsi ini juga mengatur variabel SQLCMDERRORLEVELpembuatan skrip sqlcmd . Variabel ini memiliki default .0

-V error_severity_level

Mengontrol tingkat keparahan yang digunakan untuk mengatur ERRORLEVEL variabel. Pesan kesalahan yang memiliki tingkat keparahan lebih besar dari atau sama dengan set ERRORLEVELnilai ini . Nilai yang kurang dari 0 dilaporkan sebagai 0. File Batch dan CMD dapat digunakan untuk menguji nilai ERRORLEVEL variabel.

Opsi lain-lain

-a packet_size

Meminta paket dengan ukuran yang berbeda. Opsi ini mengatur variabel SQLCMDPACKETSIZEpembuatan skrip sqlcmd . packet_size harus berupa nilai antara 512 dan 32767. Default adalah 4096. Ukuran paket yang lebih besar dapat meningkatkan performa untuk eksekusi skrip yang memiliki banyak pernyataan Transact-SQL antar GO perintah. Anda dapat meminta ukuran paket yang lebih besar. Namun, jika permintaan ditolak, sqlcmd menggunakan default server untuk ukuran paket.

-c batch_terminator

Menentukan terminator batch. Secara default, perintah dihentikan dan dikirim ke SQL Server dengan mengetik kata GO pada baris itu sendiri. Saat Anda mengatur ulang terminator batch, jangan gunakan kata kunci atau karakter yang dipesan Transact-SQL yang memiliki arti khusus untuk sistem operasi, bahkan jika 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 dipotong 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 c opsional ditentukan, output muncul tanpa Servers: baris header, 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 1 opsional 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 1 opsional ditentukan, sqlcmd menghasilkan pesan kesalahan lalu keluar. Perintah berikut dinonaktifkan saat -X opsi digunakan:

  • ED
  • !!command

-X Jika opsi ditentukan, opsi tersebut mencegah variabel lingkungan diteruskan ke sqlcmd. Ini juga mencegah skrip startup yang ditentukan dengan menggunakan SQLCMDINI variabel scripting agar tidak dijalankan. Untuk informasi selengkapnya tentang variabel pembuatan skrip sqlcmd , lihat sqlcmd - Gunakan dengan variabel pembuatan skrip.

-?

Menampilkan versi sqlcmd dan ringkasan sintaks opsi sqlcmd .

Catatan

Di macOS, jalankan sqlcmd '-?' (dengan tanda kutip) sebagai gantinya.

Keterangan

Opsi tidak harus digunakan dalam urutan yang diperlihatkan di bagian sintaks.

Saat beberapa hasil dikembalikan, sqlcmd mencetak baris kosong di antara setiap hasil yang diatur dalam batch. Selain itu, <x> rows affected pesan tidak muncul ketika tidak berlaku untuk pernyataan yang dijalankan.

Untuk menggunakan sqlcmd secara interaktif, ketik sqlcmd prompt perintah dengan 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 (misalnya cmd.exe atau bash), termasuk semua argumen dan variabel yang diperluas, ditentukan oleh sistem operasi yang mendasar.

Prioritas variabel (rendah hingga 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 pilih tab Tingkat Lanjut.

variabel pembuatan skrip sqlcmd

Variabel Opsi 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 :Connect digunakan.

R menunjukkan nilai hanya dapat diatur satu kali selama inisialisasi program.

R/W menunjukkan bahwa nilai dapat dimodifikasi dengan menggunakan :setvar perintah dan perintah berikutnya dipengaruhi oleh nilai baru.

perintah sqlcmd

Selain pernyataan Transact-SQL dalam sqlcmd, perintah berikut juga tersedia:

GO [ hitung ]

:List

[:]RESET

:Error

[:]ED

:Out

[:]!!

:Perftrace

[:]QUIT

:Connect

[:]EXIT

:On Error

:r

:Help

:ServerList

:XML [ ON | OFF ]

:Setvar

:Listvar

Ketahui hal-hal berikut saat Anda menggunakan perintah sqlcmd :

  • Semua perintah sqlcmd , kecuali GO, harus diawali oleh 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, ED perintah harus diketik segera setelah batch terakhir selesai dieksekusi.

Editor teks didefinisikan oleh SQLCMDEDITOR variabel lingkungan. Editor defaultnya adalah Edit. Untuk mengubah editor, atur SQLCMDEDITOR variabel lingkungan. Misalnya, untuk mengatur editor ke Microsoft Notepad, pada prompt perintah, ketik:

SET SQLCMDEDITOR=notepad

[:] RESET

Menghapus cache pernyataan.

:Daftar

Mencetak isi cache pernyataan.

Variabel

:Setvar <var> [ "value" ]

Menentukan 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, -l opsi mengatur SQLCMDLOGINTIMEOUTvariabel sqlcmd .

  • Secara eksplisit dengan menggunakan :Setvar perintah .

  • 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 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 diatur.

Catatan

Hanya variabel pembuatan skrip yang diatur oleh sqlcmd, dan variabel yang diatur menggunakan :Setvar perintah akan ditampilkan.

Perintah output

:Nama file> kesalahan <| STDERR | STDOUT

Alihkan semua output kesalahan ke file yang ditentukan oleh nama file, ke stderr atau ke stdout. Perintah :Error dapat muncul beberapa kali dalam skrip. Secara default, output kesalahan dikirim ke stderr.

  • filename

    Membuat dan membuka file yang menerima output. Jika file sudah ada, file dipotong menjadi nol byte. Jika file tidak tersedia karena izin atau alasan lain, output tidak dialihkan, dan dikirim ke tujuan terakhir yang ditentukan atau default.

  • STDERR

    Mengalihkan output kesalahan ke stderr aliran. Jika ini telah dialihkan, target tempat aliran telah dialihkan menerima output kesalahan.

  • STDOUT

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

:Keluar <nama> file | STDERR | STDOUT

Membuat dan mengalihkan semua hasil kueri ke file yang ditentukan oleh nama file, ke stderr atau ke stdout. Secara default, output dikirim ke stdout. Jika file sudah ada, file dipotong menjadi nol byte. Perintah :Out dapat muncul beberapa kali dalam skrip.

nama file :P erftrace <|> 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 dipotong menjadi nol byte. Perintah :Perftrace dapat muncul beberapa kali dalam skrip.

Perintah kontrol eksekusi

:On Error [ exit | ignore ]

Mengatur tindakan yang akan dilakukan ketika kesalahan terjadi selama skrip atau eksekusi batch.

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

ignore Saat opsi digunakan, sqlcmd mengabaikan kesalahan dan terus mengeksekusi batch atau skrip. Secara default, pesan kesalahan dicetak.

[:] BERHENTI

Menyebabkan sqlcmd keluar.

[:] EXIT [ ( pernyataan ) ]

Memungkinkan Anda menggunakan hasil SELECT pernyataan sebagai nilai pengembalian dari sqlcmd. Jika numerik, kolom pertama dari baris hasil terakhir dikonversi menjadi bilangan bulat 4-byte (panjang). MS-DOS, Linux, dan macOS meneruskan byte rendah ke proses induk atau tingkat kesalahan sistem operasi. Windows 2000 dan versi yang lebih baru melewati bilangan bulat 4-byte secara keseluruhan. Sintaksnya adalah :EXIT(query).

Contohnya:

:EXIT(SELECT @@ROWCOUNT)

Anda juga dapat menyertakan :EXIT parameter 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 antara tanda kurung menjalankan semuanya sebelum dalam batch, dan kemudian keluar tanpa nilai yang dikembalikan.

Ketika kueri yang salah ditentukan, sqlcmd keluar tanpa nilai yang dikembalikan.

Berikut adalah daftar EXIT format:

  • :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 berhenti, dan mengembalikan ID pesan kembali ke klien. Contohnya:

RAISERROR(50001, 10, 127)

Kesalahan ini menyebabkan skrip sqlcmd berakhir dan mengembalikan ID pesan 50001 ke klien.

Nilai -1 pengembalian yang -99 akan dicadangkan oleh SQL Server, dan sqlcmd menentukan nilai pengembalian tambahan berikut:

Nilai hasil Deskripsi
-100 Terjadi kesalahan sebelum memilih nilai pengembalian.
-101 Tidak ada baris yang ditemukan saat memilih nilai pengembalian.
-102 Terjadi kesalahan konversi saat memilih nilai pengembalian.

GO [hitung]

GO menandakan akhir batch dan eksekusi pernyataan Transact-SQL yang di-cache. Batch dijalankan beberapa kali sebagai batch terpisah. Anda tidak dapat mendeklarasikan variabel lebih dari sekali dalam satu batch.

Perintah lain-lain

:r <nama file>

Mengurai pernyataan Transact-SQL tambahan dan perintah sqlcmd dari file yang ditentukan oleh nama file ke dalam cache pernyataan. nama file dibaca relatif terhadap direktori startup tempat sqlcmd dijalankan.

Jika file berisi pernyataan Transact-SQL yang tidak diikuti oleh GO, Anda harus memasukkan GO pada baris yang mengikuti :r.

File akan dibaca dan dijalankan setelah terminator batch ditemui. Anda dapat mengeluarkan beberapa :r perintah. File dapat mencakup perintah sqlcmd apa pun, termasuk terminator GObatch .

Catatan

Jumlah baris yang ditampilkan dalam mode interaktif akan ditingkatkan satu untuk setiap :r perintah yang ditemui. Perintah :r akan muncul dalam output perintah daftar.

:ServerList

Mencantumkan server yang dikonfigurasi secara lokal dan nama server yang disiarkan di jaringan.

:Koneksi server_name[\instance_name] [-l timeout] [-U user_name [-P password]]

Koneksi ke instans SQL Server. Juga menutup koneksi saat ini.

Opsi waktu habis:

Nilai Perilaku
0 Tunggu selamanya
n>0 Tunggu n detik

Variabel SQLCMDSERVER pembuatan skrip mencerminkan koneksi aktif saat ini.

Jika batas waktu tidak ditentukan, nilai SQLCMDLOGINTIMEOUT variabel adalah default.

Jika hanya user_name yang ditentukan (baik sebagai opsi, atau sebagai variabel lingkungan), pengguna diminta untuk memasukkan kata sandi. Pengguna tidak diminta jika SQLCMDUSER variabel lingkungan atau SQLCMDPASSWORD telah ditetapkan. Jika Anda tidak menyediakan opsi atau variabel lingkungan, 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 pembuatan skrip, Anda akan menggunakan pengaturan berikut:

:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)

[:]!! command

Menjalankan perintah sistem operasi. Untuk menjalankan perintah sistem operasi, mulai baris dengan dua tanda seru (!!) diikuti oleh perintah sistem operasi. Contoh:

:!! dir

Catatan

Perintah dijalankan pada komputer tempat sqlcmd berjalan.

:XML [ ON | NONAKTIF ]

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 -i opsi atau :r perintah . File output dapat ditentukan dengan -o opsi atau :Errorperintah , :Out dan :Perftrace . Berikut ini adalah beberapa panduan untuk bekerja dengan file-file ini:

  • :Error, :Out dan :Perftrace harus menggunakan nilai 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 di komputer lokal dan bukan di 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 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.

Mulai sqlcmd. Pada prompt perintah sqlcmd, ketik kueri:

USE AdventureWorks2022;
GO

Saat Anda menekan ENTER, pesan informasi berikut dicetak:

Changed database context to 'AdventureWorks2022'.

Format output dari kueri Transact-SQL

sqlcmd terlebih dahulu mencetak header kolom yang berisi nama kolom yang ditentukan dalam daftar pemilihan. Nama kolom dipisahkan dengan menggunakan SQLCMDCOLSEP karakter . Secara default, ini adalah spasi. Jika nama kolom lebih pendek dari lebar kolom, output diisi dengan spasi hingga kolom berikutnya.

Baris ini diikuti oleh garis pemisah yang merupakan serangkaian karakter tanda hubung. Output berikut menunjukkan contoh.

Mulai sqlcmd. Pada prompt perintah sqlcmd, ketik kueri:

USE AdventureWorks2022;
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 empat karakter, kolom tersebut telah diperluas untuk mengakomodasi nama kolom yang lebih panjang. Secara default, output dihentikan pada 80 karakter. Lebar ini dapat diubah dengan menggunakan -w opsi , atau dengan mengatur SQLCMDCOLWIDTH variabel pembuatan skrip.

Format output XML

Output XML yang merupakan hasil dari FOR XML klausul 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. 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 :XML OFF perintah dikeluarkan, karena :XML OFF perintah mengalihkan sqlcmd kembali ke output berorientasi baris.

Data XML (dialirkan) dan data himpunan baris tidak dapat dicampur. :XML ON Jika perintah belum dikeluarkan sebelum pernyataan Transact-SQL yang menghasilkan aliran XML dijalankan, outputnya akan rusak. :XML ON Setelah perintah dikeluarkan, Anda tidak dapat menjalankan pernyataan Transact-SQL yang menghasilkan kumpulan baris reguler.

Catatan

Perintah :XML tidak mendukung SET STATISTICS XML pernyataan.

Format output JSON

Saat Anda mengharapkan output JSON, gunakan perintah berikut: :XML ON. Jika tidak, output mencakup 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 Microsoft Entra

Contoh menggunakan autentikasi Microsoft Entra:

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 MyAzureADPassword -l 30
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 MyAzureADPassword -l 30
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 MyAzureADPassword -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 yang sesuai.

  • Untuk meningkatkan performa, lakukan sebanyak mungkin dalam satu sesi sqlcmd , bukan dalam serangkaian sesi.

  • Atur nilai batas waktu untuk batch atau eksekusi 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 apa pun. Pesan tingkat keparahan 16 menunjukkan kesalahan umum yang dapat dikoreksi oleh pengguna.

  • Periksa kode keluar dan DOS ERRORLEVEL variabel setelah proses keluar. sqlcmd kembali 0 secara normal, jika tidak, sqlcmd mengatur sebagai dikonfigurasi ERRORLEVEL 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 sqlcmd dihentikan, dan nilainya dipengaruhi oleh menentukan -b argumen baris perintah.

Menggunakan -V16 dalam kombinasi dengan memeriksa kode keluar dan DOS ERRORLEVEL dapat membantu menangkap kesalahan di lingkungan otomatis, terutama gerbang kualitas sebelum rilis produksi.