Aracılığıyla paylaş


sqlcmd yardımcı programı

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

çeşitli modlar aracılığıyla Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını girmek için sqlcmd yardımcı programını kullanın:

  • Komut isteminde.
  • SQLCMD modundaSorgu Düzenleyicisi'nde.
  • Bir Windows script dosyasında.
  • SQL Server Agent işindeki bir işletim sistemi (cmd.exe) iş adımı.

Note

Microsoft Entra ID, Azure Active Directory (Azure AD) içinyeni ad olsa da, mevcut ortamların kesintiye uğramasını önlemek için Azure AD yine de kullanıcı arabirimi alanları, bağlantı sağlayıcıları, hata kodları ve cmdlet'ler gibi sabit kodlanmış bazı öğelerde kalır. Bu makalede, iki ad birbirinin yerine kullanılabilir.

sqlcmd varyantları

sqlcmd'nin iki değişkeni vardır:

  • sqlcmd (Go): go-mssqldb tabanlı sqlcmd, bazen go-sqlcmd olarak adlandırılır. Bu sürüm, SQL Server'ı bağımsız olarak indirebileceğiniz tek başına bir araçtır. Windows, macOS, Linux ve kapsayıcılarda çalışır.

  • sqlcmd (ODBC): SQL Server veya Microsoft Komut Satırı Yardımcı Programları ile kullanılabilen platforma hizalanmış, ODBC tabanlı sqlcmd ve Linux'ta paketin mssql-tools bir parçası. Ayrıca Windows, macOS, Linux ve kapsayıcılarda da çalışır.

Sisteminizde hangi sqlcmd değişkeninin ve sürümünün yüklü olduğunu öğrenmek için bkz. Sqlcmd yardımcı programının yüklü sürümünü denetleme.

sqlcmd'yi alma hakkında bilgi için bkz. sqlcmd yardımcı programını indirme ve yükleme.

TDS 8.0 desteği

SQL Server 2025 (17.x), sqlcmd yardımcı programı için TDS 8.0 desteği sağlar.

Syntax

Bu makalede seçenek, parametre, komut satırı bağımsız değişkeni ve anahtar terimleri birbirinin yerine kullanılabilir.

sqlcmd (Go) iki yardım moduna sahiptir: --help modern alt komutlar ve -? ODBC uyumlu bayraklar için.

Modern komutlar (--help)

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.

ODBC uyumlu bayraklar (-?)

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
   -e (echo input)
   -E (use trusted connection)
   -F hostname_in_certificate
   -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, always on)
   -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 (always enabled)
   -N[s|m|o] (encrypt connection)
   -o output_file
   -P password
   -q "cmdline query"
   -Q "cmdline query" (and exit)
   -r[0 | 1] (msgs to stderr)
   -R (ignored, client regional settings not used)
   -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)
   --authentication-method (Azure SQL authentication method)
   --driver-logging-level (mssql driver log level)
   --vertical (print results in vertical format)
   -? (usage)

sqlcmd'den işlevselliği bozabilecek değişiklikler (ODBC)

sqlcmd (Go) yardımcı programındaki çeşitli anahtarlar ve davranışlar farklıdır. Geriye dönük uyumluluk için eksik bayrakların en güncel listesi için Geriye dönük uyumluluk bayraklarının uygulanmasını önceliklendirme GitHub tartışmasına göz atın.

  • sqlcmd (Go), -P anahtarını destekler. SQL Server Kimlik Doğrulaması için şu mekanizmalar aracılığıyla parolalar sağlayabilirsiniz:

    • Komut -P satırı seçeneği
    • SQLCMDPASSWORD ortam değişkeni
    • :CONNECT komutu
    • İstendiğinde, bağlantıyı tamamlamak için parolayı yazın
  • Anahtar -r için 0 veya 1 bağımsız değişkeni gerekir.

  • Anahtar -R dikkate alınmaz. Go çalışma zamanı, kullanıcı yerel ayarı bilgilerine erişim sağlamaz.

  • Anahtar -I yoksayılır. Teklif edilen tanımlayıcılar her zaman etkindir. Tırnaklı tanımlayıcı davranışını devre dışı bırakmak için betiklerinize SET QUOTED IDENTIFIER OFF ekleyin.

  • Geçiş -M yoksayılır. sqlcmd (Go) her zaman birden fazla alt ağ üzerinde yük devretmeyi etkinleştirir.

  • , -N ,s[trict]t[rue]/m[andatory]/yes/1o[ptional]/no/0/ veya f[alse]'lerinden disablebiri olan şifreleme seçimini belirtmek için bir dize değeri alır.

    • ve -Nsağlamazsanız -Csqlcmd, sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması anlaşması sağlar.
    • -N sağlar ancak -C sağlamazsanız, sqlcmd, sunucu sertifikasının doğrulanmasını gerektirir. Şifreleme için false değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.
    • hem -Nhem de -C sağlarsanız, sqlcmd şifreleme anlaşması için değerlerini kullanır.
    • İstemci/sunucu şifreleme anlaşması hakkında daha fazla bilgi için bkz. PRELOGINMS-TDS.

    Important

    SQL Server 2025'te (17.x), -N (için o), optional (içinm, varsayılan) veya mandatory (içins) olabilir strict . Eğer siz -N eklemezseniz, -Nm (mandatory için) varsayılandır. Bu davranış, SQL Server 2022 (16.x) ve önceki sürümlerinden itibaren uyumsuzluk yaratan bir değişikliktir.

  • Anahtarla -u , oluşturulan Unicode çıkış dosyasına UTF-16 little-endian byte-order işareti (BOM) ön eki eklenir.

  • Bazı veri türleri için sütun başlıklarının hizalaması gibi, uyumluluğu OSQL sürdürmek için tutulan bazı davranışlar değişmiş olabilir.

  • tüm komutlar, EXITbile tek satıra sığmalıdır. Etkileşimli mod, komutlar için açık parantezleri veya tırnak işaretlerini kontrol etmez ve ardışık satırlar için uyarıda bulunmaz. Bu davranış, tarafından çalıştırılan EXIT(query) sorgunun birden çok satıra yayılmasına olanak tanıyan ODBC sürümünden farklıdır.

sqlcmd (Go), paylaşılan belleği, adlandırılmış kanalları ve TCP aktarımını destekler. Bir protokolü zorlamak için sunucu adında uygun protokol ön ekini kullanın:

  • lpc paylaşılan bellek için (yalnızca localhost)
  • np adlandırılmış kanallar için veya sunucu adı olarak UNC adlandırılmış kanal yolunu kullanın
  • tcp TCP için

Bir protokol belirtmezseniz, sqlcmd şu sırayla aramayı dener: lpc>np>tcp. Uzak bir konağa bağlanırken lpc adımı atlanır.

Enhancements

  • :Connect, Azure SQL Veritabanı için kimlik doğrulama yöntemlerinden birini seçmek amacıyla isteğe bağlı -G parametresine sahiptir - SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegrated, ActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentity, ActiveDirectoryPassword. Daha fazla bilgi için bkz. sqlcmd'de Microsoft Entra Kimliği ile kimlik doğrulaması yapma. -G sağlanmazsa, -U kullanıcı adı parametresinin varlığına bağlı olarak Tümleşik güvenlik veya SQL Server kimlik doğrulaması kullanılır.

  • --driver-logging-level komut satırı parametresi, go-mssqldb sürücüden izlemeleri görmenize olanak tanır. Tüm izleri görmek için 64 kullanın.

  • sqlcmd (Go), dikey biçim kullanarak sonuçları yazdırabilir. --vertical Ayarlamak için komut satırı anahtarını kullanın. SQLCMDFORMAT betik değişkeni de bunu denetler.

Komut satırı seçenekleri

Aşağıdaki tabloda sqlcmd'de kullanılabilen komut satırı seçenekleri ve bunların desteklediği işletim sistemleri listelenmiştir.

Komut satırı seçeneği Windows'da desteklenir Linux ve macOS'ta desteklenir
Oturum açmayla ilgili seçenekler
-A Yes No
-C Yes Yes
-d db_name Yes Yes
-D Yes Yes
-l login_timeout Yes Yes
-E Yes Yes
-F hostname_in_certificate Yes Yes
-g Yes Yes
-G Yes Yes
-H workstation_name Yes Yes
-j Yes Yes
-J server_certificate (sunucu sertifikası) No Yes
-K application_intent Yes Yes
-M çoklu alt ağ geçişi Yes Yes
-N[s|m|o] Yes Yes
-P parolası Yes Yes
-S [protokol:]sunucu[\instance_name][,bağlantı noktası] Yes Yes
-U login_id Yes Yes
-z new_password Yes Yes
-Z new_password Yes Yes
Giriş/çıkış seçenekleri
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] Yes Yes
-i input_file[,input_file2...] Yes Yes
-o output_file Yes Yes
-r[0 | 1] Yes Yes
-R Yes Yes
-u Yes Yes
Sorgu yürütme seçenekleri
-e Yes Yes
-I Yes Yes
-q "komut satırı sorgusu" Yes Yes
-Q "cmdline sorgusu" Yes Yes
-t query_timeout Yes Yes
-v var = değer [ var = değer... ] Yes No
-x Yes Yes
Biçim seçenekleri
-h üst bilgileri Yes Yes
-k [1 | 2] Yes Yes
-s col_separator Yes Yes
-w screen_width Yes Yes
-W Yes Yes
-y variable_length_type_görünüm_genişliği Yes Yes
-Y sabit_uzunluk_tipi_gösterim_genişliği Yes Yes
Hata raporlama seçenekleri
-b Yes Yes
-m error_level Yes Yes
-V hata_ciddiyet_düzeyi Yes Yes
Çeşitli seçenekler
-a packet_size Yes Yes
-c batch_terminator Yes Yes
-L[c] Yes No
-p[1] Yes Yes
-X[1] Yes Yes
-? Yes Yes

-A

Şunlar için geçerlidir: Yalnızca Windows. Linux ve macOS desteklenmez.

Ayrılmış yönetici bağlantısıyla (DAC) SQL Server'da oturum açar. Sunucu sorunlarını gidermek için bu tür bir bağlantı kullanın. Bu bağlantı yalnızca DAC destekleyen sunucu bilgisayarlarıyla çalışır. DAC kullanılamıyorsa, sqlcmd bir hata iletisi oluşturur ve sonra çıkar. DAC hakkında daha fazla bilgi için bkz. Veritabanı yöneticileri için tanılama bağlantısı. -A seçeneği -G seçeneğiyle desteklenmez. kullanarak -AAzure SQL Veritabanı'na bağlanırken mantıksal SQL sunucusunda yönetici olmanız gerekir. DAC, Microsoft Entra yöneticisi tarafından kullanılamaz.

Note

macOS veya Linux üzerinde ayrılmış yönetici bağlantısı (DAC) oluşturma hakkında bilgi için bkz. Programlama Yönergeleri.

-C

İstemciyi doğrulama olmadan sunucu sertifikasına örtük olarak güvenecek şekilde yapılandırmak için bu seçeneği kullanın. Bu seçenek, TRUSTSERVERCERTIFICATE = trueADO.NET seçeneğine eşdeğerdir.

sqlcmd (Go) yardımcı programı için aşağıdaki koşullar da geçerlidir:

  • Eğer -N ve -C sağlamazsanız, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulamasını müzakere eder.
  • Eğer -N sağlanır, ancak -C sağlanmazsa, sqlcmd sunucu sertifikasının doğrulanmasını gerektirir. Şifreleme için false değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.
  • hem -Nhem de -C sağlarsanız, sqlcmd şifreleme anlaşması için değerlerini kullanır.

-d db_name

USE <db_name>sqlcmd'i başlattığınızda bir deyimi oluşturur. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDDBNAMEayarlar. Bu parametre ilk veritabanını belirtir. Varsayılan, giriş bilgilerinizin varsayılan veritabanı özelliğidir. Veritabanı mevcut değilse bir hata mesajı oluşturulur ve sqlcmd kapanır.

-D

-S için sağlanan sunucu adını konak adı yerine DSN olarak yorumlar. Daha fazla bilgi için bkz. sqlcmd ve bcp'de DSN desteği.

Note

-D seçeneği yalnızca Linux ve macOS istemcilerinde kullanılabilir. Windows istemcilerinde, kaldırılan ve yoksayılan eski bir seçeneğe başvurur.

-l oturum_zaman_aşımı

Bir sunucuya bağlanmaya çalıştığınızda sqlcmd ODBC sürücüsünde oturum açma işleminin zaman aşımına uğramasına önce geçmesi gereken saniye sayısını belirtir. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDLOGINTIMEOUTayarlar. sqlcmd'e oturum açmak için varsayılan zaman aşımı 8 saniyedir. Azure SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanma ve Microsoft Entra Kimliği ile kimlik doğrulaması seçeneği kullanıldığında -G , en az 30 saniyelik bir zaman aşımı değeri önerilir. Oturum açma zaman aşımı 0 ile 65534 arasında bir sayı olmalıdır. Değer sayısal değilse veya bu aralığa girmiyorsa , sqlcmd bir hata iletisi oluşturur. 0 değeri zaman aşımının sonsuz olacağını belirtir.

-E

SQL Server'da oturum açmak için kullanıcı adı ve parola kullanmak yerine güvenilir bir bağlantı kullanır. Varsayılan olarak, -E belirtilmediğinde sqlcmd güvenilen bağlantı seçeneğini kullanır.

-E seçeneği, SQLCMDPASSWORDgibi olası kullanıcı adı ve parola ortam değişkeni ayarlarını yoksayar. -E seçeneği -U seçeneği veya -P seçeneğiyle birlikte kullanılırsa bir hata iletisi oluşturulur.

Note

Linux veya macOS istemcisinden tümleşik kimlik doğrulaması kullanan güvenilir bağlantılar oluşturma hakkında daha fazla bilgi için bkz. Tümleşik Kimlik Doğrulaması Kullanma.

-F hostname_in_certificate

Sunucu sertifikası doğrulaması sırasında kullanılacak farklı, beklenen Ortak Ad (CN) veya Konu Diğer Adı (SAN) belirtir. Bu seçenek olmadan, sertifika doğrulaması sertifikadaki CN veya SAN'ın bağlandığınız sunucu adıyla eşleşmesini sağlar. Örneğin DNS diğer adlarını kullanırken sunucu adı CN veya SAN ile eşleşmediğinde bu parametreyi kullanabilirsiniz.

Örneğin:

sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -F server01.adventure-works.com

Note

sqlcmd (Go), sunucu sertifikasında konak adını belirtmek için de kullanır -F . Sonuçları dikey biçimde yazdırmak için sqlcmd (Go) komutu --vertical anahtarını kullanır.

-g

Sütun Şifrelemesi ayarını Enabledolarak ayarlar. Daha fazla bilgi için bkz. Always Encrypted . Yalnızca Windows Sertifika Deposu'nda depolanan ana anahtarlar desteklenir. -g seçeneği için en az sqlcmd sürümü 13.1gerekir. Sürümünüzü belirlemek için komutunu çalıştırın sqlcmd -?.

-G

Azure SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanırken Microsoft Entra ile kimlik doğrulaması yapmak için bu seçeneği kullanın. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDUSEAAD = trueayarlar. -G seçeneği için en az sqlcmd sürümü 13.1gerekir. Sürümünüzü belirlemek için komutunu çalıştırın sqlcmd -?. Daha fazla bilgi için bkz. Azure SQL için Microsoft Entra kimlik doğrulaması. -A seçeneği -G seçeneğiyle desteklenmez.

-G seçeneği yalnızca Azure SQL Veritabanı ve Azure Synapse Analytics için geçerlidir.

Microsoft Entra etkileşimli kimlik doğrulaması şu anda Linux veya macOS'ta desteklenmiyor. Microsoft Entra tümleşik kimlik doğrulaması, SQL Server sürüm 17.6.1 veya üzeri için ODBC Sürücüsünü İndirmeyi ve düzgün yapılandırılmış bir Kerberos ortamını gerektirir.

Microsoft Entra kimlik doğrulaması hakkında daha fazla bilgi için bkz. sqlcmd'de Microsoft Entra Kimliği ile kimlik doğrulama.

-H workstation_name (iş istasyonu adı)

İş istasyonu adı. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDWORKSTATIONayarlar. İş istasyonu adı, katalog görünümünün hostnamesys.sysprocesses sütununda görünür ve sp_who saklı yordamı kullanılarak geri döndürülebilir. Bu seçeneği belirtmezseniz, varsayılan değer geçerli bilgisayar adıdır. Farklı sqlcmd oturumlarını tanımlamak için bu adı kullanın.

-j

Ham hata iletilerini ekrana yazdırır.

-J sunucu_sertifikası

Şunlar için geçerlidir: yalnızca sqlcmd (ODBC), Linux ve macOS. Windows desteklenmez.

Sunucu sertifika dosyasının yolunu belirtir. Bu dosya sunucunun bağlantı şifreleme sertifikasıyla eşleşir. Eşleştirme, standart sertifika doğrulaması (süre sonu, ana bilgisayar adı, güven zinciri vb.) yerine yapılır. Kabul edilen sertifika biçimleri PEM, DER ve CER'tir.

Otomatik olarak imzalanan sertifikaları veya özel sertifika yetkilisi tarafından verilen sertifikaları kullanan sunuculara bağlanırken bu seçeneği kullanın. Şifreleme etkinleştirilirse ve sertifika doğrulaması başarısız olursa, bağlantı başarısız olur.

Örneğin:

sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -J /etc/ssl/certs/server_certificate.cer

-K application_intent (uygulama amacı)

Sunucuya bağlanırken uygulama iş yükü türünü bildirir. Şu anda desteklenen tek değer ReadOnly. Eğer -K belirtmezseniz, sqlcmd bir kullanılabilirlik grubundaki ikincil replikaya bağlantıyı desteklemez. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubunun ikincil çoğaltmasına salt okunur iş yükünü boşaltma.

Note

-K SUSE Linux Enterprise Server'da (SLES) desteklenmez. Ancak ApplicationIntent=ReadOnly geçirilen bir DSN dosyasında anahtar sözcüğünü belirtebilirsiniz. Daha fazla bilgi için bu makalenin devamında sqlcmd ve bcp'de DSN Desteği bölümüne bakın.

Daha fazla bilgi için bkz. Linux ve macOS'ta yüksek kullanılabilirlik ve olağanüstü durum kurtarma.

-M multisubnet_failover

SQL Server kullanılabilirlik grubu dinleyicisine ya da bir SQL Server Yük Devretme Kümesi Örneğine bağlanırken her zaman -M ifadesini belirtin. -M, (şu anda) etkin sunucuya daha hızlı algılama ve bağlantı sağlar. Eğer -M belirtmezseniz -M kapalıdır.

Daha fazla bilgi için bakınız:

Note

-M SUSE Linux Enterprise Server'da (SLES) desteklenmez. Ancak MultiSubnetFailover=Yes geçirilen bir DSN dosyasında anahtar sözcüğünü belirtebilirsiniz. Daha fazla bilgi için bu makalenin devamında sqlcmd ve bcp'de DSN Desteği bölümüne bakın.

Daha fazla bilgi için bkz. Linux ve macOS'ta yüksek kullanılabilirlik ve olağanüstü durum kurtarma.

-N[s|m|o]

İstemci, şifreli bağlantı istemek için bu seçeneği kullanır.

Anahtar -N (için o), optional (varsayılan, için m) veya mandatory (için s) olabilir strict. Eklemezseniz -N, varsayılan -Nm olur (için mandatory). Bu varsayılan, -No olan SQL Server 2022 (16.x) ve önceki sürümlerden farklı olarak, önemli bir değişikliktir.

sqlcmd (Go) yardımcı programı için, -N şifreleme seçimini belirtmek üzere true, false, veya disable olabilecek bir dize değeri alır. (default parametresinin atlanmasıyla aynıdır):

  • ve -Nsağlamazsanız -Csqlcmd, sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması anlaşması sağlar.

  • -N sağlar ancak -C sağlamazsanız, sqlcmd, sunucu sertifikasının doğrulanmasını gerektirir. Şifreleme için false değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.

  • hem -Nhem de -C sağlarsanız, sqlcmd şifreleme anlaşması için değerlerini kullanır.

-P parola

Kullanıcı tarafından belirtilen bir parola. Parolalar büyük/küçük harfe duyarlıdır. Eğer -U seçeneğini kullanır, ancak -P seçeneğini kullanmaz veya SQLCMDPASSWORD ortam değişkenini ayarlamazsanız, sqlcmd kullanıcıdan parola ister. Null (boş) parola kullanmayın, ancak parametre değeri ("") için bir çift bitişik çift tırnak işareti kullanarak null parolayı belirtebilirsiniz.

Important

Kullanmak -P güvenli değildir. Komut satırında parola vermekten kaçının. Alternatif olarak, SQLCMDPASSWORD ortam değişkenini kullanın veya -P seçeneğini atlayarak parolayı etkileşimli olarak girin.

Güçlü bir parola kullanın.

Parola istemi konsola yazdırılarak aşağıdaki şekilde gösterilir: Password:

Kullanıcı girişi gizlidir. Başka bir deyişle hiçbir şey görüntülenmez ve imleç konumunda kalır.

SQLCMDPASSWORD ortam değişkeni, geçerli oturum için varsayılan bir parola ayarlamanıza olanak tanır. Bu nedenle, parolaların toplu iş dosyalarına sabit kodlanması gerekmez. Aşağıdaki örnek önce komut isteminde SQLCMDPASSWORD değişkenini ayarlar ve ardından sqlcmd yardımcı programına erişir.

Komut isteminde aşağıdaki komutu yazın. <password> geçerli bir parolayla değiştirin.

SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd

Kullanıcı adı ve parola bileşimi yanlışsa bir hata iletisi oluşturulur.

Note

Ortam OSQLPASSWORD değişkeni geriye dönük uyumluluk için tutulur. SQLCMDPASSWORD ortam değişkeni, OSQLPASSWORD ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski yazılımlar çalışmaya devam ediyor.

-P seçeneğini -E seçeneğiyle birlikte kullanırsanız bir hata iletisi oluşur.

Birden fazla bağımsız değişkenle -P seçeneğini kullanırsanız, bir hata iletisi oluşturulur ve program sonlanır.

Özel karakterler içeren bir parola bir hata iletisi oluşturabilir. -Pkullanırken özel karakterlerden kurtulmanız veya bunun yerine SQLCMDPASSWORD ortam değişkenini kullanmanız gerekir.

Linux ve macOS'ta, seçeneği olmadan -G kullanıldığında -U, erişim belirteci içeren bir dosyayı belirten -P seçeneğini belirtir (v17.8+). Belirteç dosyası UTF-16LE (BOM yok) biçiminde olmalıdır.

Erişim belirteçleri çeşitli yöntemlerle elde edilebilir. Erişim belirtecinin, gönderildiği as-isadresine bayt bayt doğru olmasını sağlamanız gerekir. Aşağıdaki örnek komut bir erişim belirteci alır. Komutu Azure CLI ve Linux komutlarını kullanır ve uygun biçimde bir dosyaya kaydeder. Sisteminizin veya terminalinizin varsayılan kodlaması ASCII veya UTF-8 değilse, iconv seçeneklerini ayarlamanız gerekebilir. Sonuçta elde edilen dosyanın güvenliğini dikkatle aldığınızdan ve artık gerekli olmadığında dosyayı sildiğinizden emin olun.

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

-S [protokol:]sunucu[\instance_name][,bağlantı noktası]

Bağlanacak SQL Server örneğini belirtir. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDSERVERayarlar.

Bu sunucu bilgisayardaki varsayılan SQL Server örneğine bağlanmak için server_name belirtin. Sunucu bilgisayardaki adlandırılmış bir SQL Server örneğine bağlanmak için [\instance_name] server_namebelirtin. Sunucu bilgisayarı belirtmezseniz , sqlcmd yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Bu seçenek, sqlcmd'yi ağdaki uzak bir bilgisayardan çalıştırdığınızda gereklidir.

protokoltcp (TCP/IP), lpc (paylaşılan bellek) veya np (adlandırılmış kanallar) olabilir.

sqlcmd başlattığınızda [\instance_name] server_namebelirtmezseniz, SQL Server SQLCMDSERVER ortam değişkenini denetler ve bu değişkeni kullanır.

Note

Ortam OSQLSERVER değişkeni geriye dönük uyumluluk için tutulur. SQLCMDSERVER ortam değişkeni, OSQLSERVER ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski yazılımlar çalışmaya devam ediyor.

Linux ve macOS'ta ODBC sürücüsü gerektirir -S. Geçerli tek protokol değeridir tcp.

-U login_id

Oturum açma adı veya içeriğinde bulunan veritabanı kullanıcı adı. İçerilen veritabanı kullanıcıları için veritabanı adı seçeneğini (-d) sağlamanız gerekir.

Note

Ortam OSQLUSER değişkeni geriye dönük uyumluluk için tutulur. SQLCMDUSER ortam değişkeni, OSQLUSER ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski yazılımlar çalışmaya devam ediyor.

-U veya -P seçeneğini belirtmezseniz sqlcmd Windows Kimlik Doğrulama modunu kullanarak bağlanmaya çalışır. Kimlik doğrulaması, sqlcmd çalıştıran kullanıcının Windows hesabını temel alır.

Eğer -U seçeneğini -E seçeneğiyle birlikte kullanırsanız (bu makalenin ilerleyen bölümlerinde açıklanmıştır), bir hata iletisi oluşturulur. -U seçeneğinin ardından birden fazla bağımsız değişken gelirse, bir hata mesajı üretilir ve program sona erer.

-z new_password

Parolayı değiştirin. <oldpassword> eski parolayla, <newpassword> yeni parolayla değiştirin.

sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>

-Z new_password

Parolayı değiştirin ve çıkın. <oldpassword> eski parolayla, <newpassword> yeni parolayla değiştirin.

sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>

Giriş ve çıkış seçenekleri

-f kod sayfası | i:kod sayfası[,o:kod sayfası] | o:kod sayfası[,i:kod sayfası]

Giriş ve çıkış kodu sayfalarını belirtir. Kod sayfası numarası, yüklü bir Windows kod sayfasını belirten sayısal bir değerdir.

Kod sayfası dönüştürme kuralları:

  • Kod sayfası belirtmezseniz, giriş dosyası unicode dosyası olmadığı sürece sqlcmd hem giriş hem de çıkış dosyaları için geçerli kod sayfasını kullanır ve bu durumda dönüştürme gerekmez.

  • sqlcmd hem büyük hem de küçük endian Unicode giriş dosyalarını otomatik olarak tanır. Seçeneği -u olarak belirtirseniz, çıkış her zaman little-endian Unicode olur.

  • Çıkış dosyası belirtmezseniz, çıkış kodu sayfası konsol kodu sayfasıdır. Bu yaklaşım, çıkışın konsolda doğru görüntülenmesini sağlar.

  • Birden çok giriş dosyasının aynı kod sayfasını kullandığı varsayılır. Unicode ve Unicode olmayan giriş dosyaları karıştırılabilir.

chcpkod sayfasını doğrulamak için komut istemine cmd.exe girin.

Note

Linux'ta kod sayfası numarası, yüklü bir Linux kod sayfasını belirten sayısal bir değerdir (17.5.1.1'den itibaren kullanılabilir).

-i input_file[,input_file2...]

Bir grup Transact-SQL deyimi veya saklı yordam içeren dosyayı tanımlar. sqlcmd'nin sırasıyla okuyup işlediği birden çok dosya belirtebilirsiniz. Dosya adları arasında boşluk kullanmayın. sqlcmd önce belirtilen tüm dosyaların mevcut olup olmadığını denetler. Bir veya daha fazla dosya yoksa sqlcmd çıkar. Seçenek -i ve -Q/-q seçenekler birbirini dışlar.

Note

-i seçeneğini ve ardından bir veya daha fazla ek parametre kullanırsanız, parametre ile değer arasında boşluk bırakmanız gerekir. Bu gereksinim , sqlcmd (Go) içinde bilinen bir sorundur.

Yol örnekleri:

-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"

Boşluk içeren dosya yolları tırnak içine alınmalıdır.

Bu seçeneği birden çok kez kullanabilirsiniz:

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

-o çıkış_dosyası

sqlcmdçıktısını alan dosyayı tanımlar.

-u belirlediğiniz takdirde sqlcmdoutput_file'ı Unicode biçiminde depolar. Dosya adı geçerli değilse , sqlcmd bir hata iletisi oluşturur ve çıkar. sqlcmd, aynı dosyaya birden çok sqlcmd işleminin eşzamanlı olarak yazıldığını desteklemez. Böyle bir durumda dosya çıkışının bozuk veya yanlış olduğunu göz önünde bulundurun. -f seçeneği de dosya biçimleriyle ilgilidir. sqlcmd bu dosya mevcut değilse oluşturur. sqlcmd önceki oturumdan aynı isme sahip bir dosyanın üzerine yazar. Burada belirtilen dosya stdout dosyası değil. Bir stdout dosya belirtirseniz , sqlcmd bu dosyayı kullanmaz.

Yol örnekleri:

-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"

Boşluk içeren dosya yolları tırnak içine alınmalıdır.

-r[0 | 1]

Hata mesajı çıkışını ekrana (stderr) yönlendirir. Parametre belirtmezseniz veya 0belirtirseniz, yalnızca önem düzeyi 11 veya daha yüksek olan hata iletileri yeniden yönlendirilir. 1belirtirseniz, PRINT dahil olmak üzere tüm hata iletisi çıkışı yeniden yönlendirilir. -okullanıyorsanız bu seçeneğin hiçbir etkisi olmaz. varsayılan olarak, iletiler stdoutgönderilir.

Note

sqlcmd (Go) yardımcı programı için -r bir 0 veya 1 bağımsız değişkeni gerektirir.

-R

Şunlar için geçerlidir: yalnızca sqlcmd (ODBC).

sqlcmd istemcinin yerel ayarına göre SQL Server'dan alınan sayısal, para birimi, tarih ve saat sütunlarını yerelleştirmesine neden olur. Varsayılan olarak, bu sütunlar sunucunun bölgesel ayarları kullanılarak görüntülenir.

Note

Linux ve macOS'ta şu -R anda yalnızca (ABD İngilizcesi) biçimlendirmesi kullanılmaktadır en_US .

-u

input_filebiçiminden bağımsız olarak output_file Unicode biçiminde depolandığını belirtir.

Note

sqlcmd (Go) yardımcı programı için oluşturulan Unicode çıkış dosyası, bir UTF-16 little-endian bayt sırası işareti (BOM) ile başlar.

Sorgu yürütme seçenekleri

-e

Giriş betiklerini standart çıkış cihazına (stdout) yazar.

-I

Şunlar için geçerlidir: yalnızca sqlcmd (ODBC).

SET QUOTED_IDENTIFIER bağlantı seçeneğini ONolarak ayarlar. Varsayılan ayar OFF. Daha fazla bilgi için bkz. SET QUOTED_IDENTIFIER.

Note

sqlcmd (Go) yardımcı programında tanımlayıcı tırnak davranışını devre dışı bırakmak için betiklerinize SET QUOTED IDENTIFIER OFF olarak ekleyin.

-q "komut satırı sorgusu"

sqlcmd başlatıldığında sorgu yürütür, ancak sorgu tamamlandığında sqlcmd'dan çıkmaz. Noktalı virgülle ayrılmış birden çok sorgu çalıştırabilirsiniz. Aşağıdaki örnekte gösterildiği gibi sorgunun çevresinde tırnak işaretleri kullanın.

Komut istemine şunu yazın:

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

Important

Sorguda GO sonlandırıcısını kullanmayın.

Bu seçeneği -b ile birlikte belirtirseniz, sqlcmd bir hatayla sona erer. bu -b seçenek bu makalenin başka bir yerinde açıklanmıştır.

-Q "komut satırı sorgusu"

sqlcmd başlatıldığında bir sorgu yürütür ve ardından sqlcmd hemen çıkar. Noktalı virgülle ayrılmış birden çok sorgu yürütebilirsiniz.

Aşağıdaki örnekte gösterildiği gibi sorgunun çevresinde tırnak işaretleri kullanın.

Komut istemine şunu yazın:

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

Important

Sorguda GO sonlandırıcısını kullanmayın.

Eğer -b seçeneği ile birlikte belirtirseniz, sqlcmd bir hatayla sonlanır. bu -b seçenek bu makalenin başka bir yerinde açıklanmıştır.

-t query_timeout

Bir komutun (veya Transact-SQL deyiminin) zaman aşımına uğramasından önceki saniye sayısını belirtir. Bu seçenek, sqlcmd betik değişkenini SQLCMDSTATTIMEOUTbelirler. query_timeout değeri belirtmezseniz komut zaman aşımına neden olmaz. query_timeout ile 1arasında 65534 bir sayı olmalıdır. Sayısal olmayan veya bu aralığa girmeyen bir değer sağlarsanız , sqlcmd bir hata oluşturur.

Note

Gerçek zaman aşımı değeri, belirtilen query_timeout değerinden birkaç saniye kadar değişebilir.

-v var = değer [ var = değer... ]

Şunlar için geçerlidir: Yalnızca Windows. Linux ve macOS desteklenmez.

Sqlcmd betiğinde kullanmak üzere bir sqlcmd betik değişkeni oluşturur.

Değer boşluk içeriyorsa, değeri tırnak içine alın. Birden çok <var>="<value>" değeri belirtebilirsiniz. Belirttiğiniz değerlerden herhangi biri hata içeriyorsa , sqlcmd bir hata iletisi oluşturur ve sonra çıkar.

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

sqlcmd'in betik değişkenlerini yoksaymasına neden olur. Bu parametre, bir betik INSERTgibi normal değişkenlerle aynı biçime sahip dizeler içerebilen birçok $(<variable_name>) deyimi içerdiğinde yararlıdır.

Biçim seçenekleri

-h üst bilgileri

Sütun başlıkları arasında yazdırılacak satır sayısını belirtir. Varsayılan ayar, her sorgu sonucu kümesi için başlıkları bir kez yazdırır. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDHEADERSayarlar. Headers'ın yazdırılmadığını belirtmek için -1 kullanın. Geçersiz bir değer sqlcmd'nin bir hata iletisi oluşturmasına ve ardından çıkışına neden olur.

-k [1 | 2]

Sekmeler ve yeni satır karakterleri gibi tüm denetim karakterlerini çıkıştan kaldırır. Bu parametre, veriler döndürülürken sütun biçimlendirmeyi korur.

  • -k denetim karakterlerini kaldırır.
  • -k1 her denetim karakterini bir boşlukla değiştirir.
  • -k2, ardışık denetim karakterlerini tek bir boşlukla değiştirir.

-s col_separator

Sütun ayırıcı karakterini belirtir. Varsayılan değer boş bir alandır. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDCOLSEPayarlar. İşletim sistemi için özel anlamı olan karakterler, örneğin ampersand (&) veya noktalı virgül (;) kullanırken, karakteri tırnak işareti (") içine alın. Sütun ayırıcı herhangi bir 8 bit karakter olabilir.

-w screen_width

Çıktının ekran genişliğini belirtir. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDCOLWIDTHayarlar. Sütun genişliği, 8'den büyük ve 65536küçük bir sayı olmalıdır. Belirtilen sütun genişliği bu aralığa düşmezse sqlcmd bir hata iletisi oluşturur. Varsayılan genişlik 80 karakterdir. Çıkış satırı belirtilen sütun genişliğini aştığında, sonraki satıra kaydırılır.

-W

Bir sütundaki sondaki boşlukları kaldırır. Bu seçeneği, başka bir uygulamaya aktarmak istediğiniz verileri hazırlarken seçeneğiyle -s birlikte kullanın. -y veya -Y seçenekleriyle kullanılamaz.

-y değişken_uzunluk_tipi_görüntü_eni

sqlcmd betik değişkenini ayarlar SQLCMDMAXVARTYPEWIDTH. Varsayılan değer şudur: 256. Büyük değişken uzunluğundaki veri türleri için döndürülen karakter sayısını sınırlar:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • xml
  • kullanıcı tanımlı veri türlerini (UDT)
  • text
  • ntext
  • image

UDF'ler uygulamaya bağlı olarak sabit uzunlukta olabilir. Sabit uzunluktaki UDT'nin uzunluğu display_width'den kısaysa döndürülen UDT değeri etkilenmez. Ancak, uzunluk display_width'den uzunsa çıkış kesilir.

Caution

Döndürülen verilerin boyutuna -y 0 bağlı olarak hem sunucuda hem de ağda önemli performans sorunlarına neden olabileceğinden bu seçeneği çok dikkatli kullanın.

-Y sabit_uzunluk_tipi_görünüm_genişliği

sqlcmd betik değişkenini ayarlar SQLCMDMAXFIXEDTYPEWIDTH. Varsayılan değer (sınırsız) değeridir 0 . Aşağıdaki veri türleri için döndürülen karakter sayısını sınırlar:

  • char(n), burada 1 <= n<= 8000
  • nchar(n), burada 1 <= n<= 4000
  • varchar(n), burada 1 <= n<= 8000
  • nvarchar(n), burada 1 <= n<= 4000
  • varbinary(n), burada 1 <= n<= 4000
  • sql_variant

Hata raporlama seçenekleri

-b

sqlcmd çıkış yapıp bir hata oluştuğunda DOS ERRORLEVEL değeri döndürdüğünü belirtir. sqlcmd'nin değişkene ERRORLEVEL döndürdüğü değer, SQL Server hata iletisinin önem düzeyi 10'dan büyük olduğunda olur1. Aksi takdirde, döndürülen değer şeklindedir 0. -V seçeneğini, -b seçeneğine ek olarak ayarlarsanız, önem düzeyi -V seçeneği tarafından ayarlanan değerlerden düşükse, sqlcmd hata bildirmez. Komut istemi toplu iş dosyaları ERRORLEVEL değerini test edebilir ve hatayı uygun şekilde işleyebilir. sqlcmd ciddiyet seviyesi 10 (bilgilendirme mesajları) için hataları bildirmez.

sqlcmd betiği yanlış bir yorum, sözdizimi hatası içeriyorsa veya bir betik değişkeni eksikse, ERRORLEVEL olarak döndürülen 1olur.

-m hata düzeyi

stdout'a gönderilecek hata iletilerini denetler. sqlcmd , önem düzeyi bu düzeyden büyük veya bu düzeye eşit olan iletiler gönderir. Bu değeri olarak -1ayarladığınızda , sqlcmd bilgilendiren iletiler de dahil olmak üzere tüm iletileri gönderir. ve -marasına boşluk eklemeyin-1. Örneğin, -m-1 geçerli ve -m -1 geçerli değil.

Bu seçenek ayrıca sqlcmd betik oluşturma değişkeni SQLCMDERRORLEVELayarlar. Bu değişkenin varsayılan 0değeri vardır.

-V hata_şiddet_düzeyi

sqlcmd'nin değişkeni ayarlamak ERRORLEVEL için kullandığı önem düzeyini denetler. ERRORLEVELbu değer kümesinden büyük veya buna eşit önem düzeylerine sahip hata iletileri. 0'dan küçük değerler 0olarak bildirilir. Batch ve CMD dosyalarını kullanarak değişkenin ERRORLEVEL değerini test edebilirsiniz.

Çeşitli seçenekler

-a packet_size

Farklı boyutta bir paket isteğinde bulunur. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDPACKETSIZEayarlar. packet_size512 ile 32767arasında bir değer olmalıdır. Varsayılan değer 4096. Daha büyük bir paket boyutu, komutlar arasında GO birçok Transact-SQL deyimi olan betiklerin yürütülmesi için performansı artırabilir. Daha büyük bir paket boyutu isteyebilirsiniz. Ancak, istek reddedilirse sqlcmd paket boyutu için varsayılan sunucuyu kullanır.

-c batch_terminator

Pake terminatörünü belirtir. Varsayılan olarak, komutları sonlandırmanız ve tek başına bir satırdaki sözcüğü GO ve ardından Enter'ı kullanarak SQL Server'a göndermeniz gerekir. Toplu iş sonlandırıcısını sıfırladığınızda, işletim sistemi için özel anlamı olan karakterleri veya Transact-SQL ayrılmış anahtar sözcükleri, önünde bir ters eğik çizgi olsa bile, kullanmayın.

-L[c]

Şunlar için geçerlidir: Yalnızca Windows. Linux ve macOS desteklenmez.

Yerel olarak yapılandırılmış sunucu bilgisayarlarını ve ağda yayınlayan sunucu bilgisayarlarının adlarını listeler. Bu parametreyi diğer parametrelerle birlikte kullanamazsınız. Listelenebilen en fazla sunucu bilgisayarı sayısı 3.000'dir. Sunucu listesi bellek boyutu nedeniyle kısaltılırsa, bir uyarı iletisi görüntülenir.

Note

Ağlarda yayın özelliği nedeniyle sqlcmd tüm sunuculardan zamanında yanıt alamayabilir. Bu nedenle, döndürülen sunucuların listesi bu seçeneğin her çağrısı için farklılık gösterebilir.

İsteğe bağlı parametresini cbelirtirseniz, çıktı üst bilgi satırı olmadan Servers: görüntülenir ve her sunucu satırı başta boşluk olmadan listelenir. Bu sunum temiz çıktı olarak adlandırılır. Temiz çıkış, betik dillerinin işleme performansını artırır.

-p[1]

Her sonuç kümesi için performans istatistiklerini yazdırır. Aşağıdaki görüntü, performans istatistiklerinin biçimine bir örnektir:

Network packet size (bytes): n

x xact[s]:

Clock Time (ms.): total       t1  avg       t2 (t3 xacts per sec.)

Where:

  • x = SQL Server tarafından işlenen işlem sayısı.
  • t1 = Tüm işlemler için toplam süre.
  • t2 = Tek bir işlemin ortalama süresi.
  • t3 = Saniye başına ortalama işlem sayısı.

Tüm zamanlar milisaniye cinsindendir.

İsteğe bağlı 1 parametresini belirtirseniz, istatistiklerin çıkış biçimi, bir elektronik tabloya kolayca aktarılabilecek veya bir betik tarafından işlenebilecek şekilde iki nokta üst üste ile ayrılmış formattadır.

İsteğe bağlı parametreyi 1 dışında bir değer olarak belirtirseniz bir hata oluşur ve sqlcmd kapatılır.

-X[1]

bir toplu iş dosyasından sqlcmd yürütürken sistem güvenliğini tehlikeye atabilecek komutları devre dışı bırakır. Devre dışı bırakılan komutlar hala tanınıyor; sqlcmd bir uyarı iletisi oluşturur ve devam eder. İsteğe bağlı parametresini 1belirtirseniz , sqlcmd bir hata iletisi oluşturur ve sonra çıkar. -X seçeneği kullanıldığında aşağıdaki komutlar devre dışı bırakılır:

  • ED
  • !! komut

seçeneğini belirtirseniz -X , ortam değişkenlerinin sqlcmd'ye geçirilmesini engeller. Ayrıca SQLCMDINI betik değişkeni kullanılarak belirtilen başlangıç betiğinin yürütülmesini engeller. sqlcmd betik değişkenleri hakkında daha fazla bilgi için bkz. sqlcmd -betik değişkenleriyle kullanma.

-?

sqlcmd sürümünü ve sqlcmd seçeneklerinin söz dizimi özetini görüntüler.

Note

macOS'ta bunun yerine sqlcmd '-?' (tırnak işaretleri ile) çalıştırın.

Remarks

Söz dizimi bölümünde gösterilen sırada seçenekleri kullanmanız gerekmez.

Note

-i seçeneğini ve ardından bir veya daha fazla ek parametre kullanırsanız, parametre ile değer arasında boşluk bırakmanız gerekir. Bu gereksinim , sqlcmd (Go) içinde bilinen bir sorundur.

sqlcmd , toplu işlemdeki birden çok sonuç kümesi arasında boş bir satır yazdırır. Ayrıca, <x> rows affected mesajı, yürütülen ifadeye uygulanmadığında görüntülenmez.

sqlcmd etkileşimli olarak kullanmak için, komut istemine bu makalenin önceki bölümlerinde açıklanan seçeneklerden herhangi biriyle veya daha fazlasıyla sqlcmd yazın. Daha fazla bilgi için bkz . sqlcmd kullanma.

Note

Aşağıdaki -l, -Q, -Z veya -i seçenekleri, sqlcmd'nin yürütmeden sonra çıkmasını sağlar.

Temel alınan işletim sistemi, tüm bağımsız değişkenler ve genişletilmiş değişkenler dahil olmak üzere komut ortamındaki (örneğin, veya cmd.exe) bash komut satırının toplam uzunluğunu belirler.

sqlcmd ve bcp'de DSN desteği

belirtirseniz, bcp -S veya sqlcmd :Connect seçeneği (veya -D komutu) kullanırken sunucu adı yerine bir veri kaynağı adı (DSN) belirtebilirsiniz. Eğer -D seçeneğini kullanırsanız, sqlcmd ve bcp, -S seçeneğiyle DSN'de belirtilen sunucuya bağlanır.

Sistem DSN'leri odbc.ini dosyasında, ODBC SysConfigDir dizininde (/etc/odbc.ini standart yüklemelerde) depolanır. Kullanıcı DSN'leri bir kullanıcının giriş dizininde .odbc.ini (~/.odbc.ini ) depolanır.

Windows sistemlerinde Sistem ve Kullanıcı DSN'leri kayıt defterinde depolanır ve aracılığıyla odbcad32.exeyönetilir. bcp ve sqlcmd , dosya DSN'lerini desteklemez.

Sürücünün desteklediği girdilerin listesi için bkz. DSN ve Bağlantı Dizesi Anahtar Sözcükleri ve Öznitelikleri.

DSN'de yalnızca DRIVER giriş gereklidir. Uzak sunucuya bağlanmak için sqlcmd veya bcp öğesinde bir değere SERVER ihtiyaç duyar. SERVER Öğe boşsa veya DSN'de yoksa, sqlcmd veya bcp yerel sistemdeki varsayılan örneğe bağlanmayı dener.

Windows sistemlerinde bcp kullandığınızda, SQL Server 2017 (14.x) ve önceki sürümler SQL Native Client 11 sürücüsünü (sqlncli11.dll) gerektirirken, SQL Server 2019 (15.x) ve sonraki sürümler için SQL Server sürücüsü (msodbcsql17.dll) için Microsoft ODBC Sürücüsü 17 gerekir.

Hem DSN'de hem de sqlcmd veya bcp komut satırında aynı seçeneği belirtirseniz, komut satırı seçeneği DSN'de kullanılan değeri geçersiz kılar. Örneğin, DSN'nin bir DATABASE girdisi varsa ve sqlcmd komut satırında -d içeriyorsa, geçirilen -d değeri kullanılır. DSN'de Trusted_Connection=yes belirtirseniz, Kerberos kimlik doğrulaması kullanılır; kullanıcı adı (-U) ve parola (-P), sağlanmışsa yoksayılır.

Aşağıdaki diğer adı tanımlayarak sqlcmd kullanmak üzere isql öğesini çağıran mevcut betikleri değiştirebilirsiniz: alias isql="sqlcmd -D".

sqlcmd en iyi uygulamaları

Güvenlik ve verimliliği en üst düzeye çıkarmak için aşağıdaki uygulamaları kullanın:

  • Tümleşik güvenliği kullanın.

  • Otomatik ortamlarda -X[1] kullanın.

  • Uygun dosya sistemi izinlerini kullanarak giriş ve çıkış dosyalarının güvenliğini sağlayın.

  • Performansı artırmak için bir dizi oturum kullanmak yerine bir sqlcmd oturumunda mümkün olduğunca çok işlem yapın.

  • Toplu iş veya sorgu yürütme için zaman aşımı değerlerini, toplu iş veya sorgu için beklenen yürütme süresinden daha yüksek bir değere ayarlayın.

Doğruluğu en üst düzeye çıkarmak için aşağıdaki uygulamaları kullanın:

  • 'yi önem derecesi 16 düzeyindeki iletileri günlüğe kaydetmek için kullanın. Önem derecesi 16 iletileri, düzeltebileceğiniz genel hataları gösterir.

  • İşlem çıktıktan sonra çıkış kodunu ve DOS ERRORLEVEL değişkenini denetleyin. sqlcmd normal şekilde döndürür 0 . Aksi takdirde, -V tarafından yapılandırıldığı gibi ERRORLEVEL öğesini ayarlar. Başka bir deyişle, SQL Server'dan bildirilen hata numarasıyla aynı değeri beklemeyin ERRORLEVEL . Hata numarası, @@ERROR sistem işlevine karşılık gelen SQL Server'a özgü bir değerdir. ERRORLEVEL , sqlcmd'nin neden sonlandırıldığını gösteren sqlcmd'ye özgü bir değerdir. Değeri, -b parametresinin belirtilmesiyle etkilenir.

Çıkış kodu ve -V 16 denetimiyle birlikte DOS ERRORLEVEL kullanmak, üretim sürümünden önce özellikle kalite geçitleri olmak üzere otomatik ortamlardaki hataları yakalamaya yardımcı olabilir.