Aracılığıyla paylaş


sqlcmd yardımcı programı

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'teki SQL Veritabanı

sqlcmd yardımcı programı çeşitli modlar aracılığıyla Transact-SQL deyimleri, sistem yordamlarını ve betik dosyalarını girmenizi sağlar:

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

Not

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.

Hangi sürümü yüklediğinizi öğrenin

sqlcmdiki sürümü vardır:

  • go-mssqldbtabanlı sqlcmd, bazen go-sqlcmdolarak stillendirilir. Bu sürüm, SQL Server'ı bağımsız olarak indirebileceğiniz tek başına bir araçtır.

  • ODBC tabanlı sqlcmd, SQL Server veya Microsoft Komut Satırı Yardımcı Programları ile kullanılabilir ve Linux'ta mssql-tools paketinin bir parçasıdır.

Yüklü sürümü belirlemek için komut satırında aşağıdaki deyimi çalıştırın:

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

sqlcmd (Go) yeni sürümünü kullanıyorsanız, çıktı aşağıdaki örneğe benzer:

Version: 1.8.2

Sürümü denetle

Hangi sürümün yüklü olduğunu belirlemek için sqlcmd --version kullanabilirsiniz. En az 1.0.0 sürümünü yüklemiş olmanız gerekir.

Önemli

sqlcmd (Go) paketini bir paket yöneticisi aracılığıyla yüklemek, ortam yolunuzda sqlcmd (ODBC) yerine sqlcmd (Go) ile değiştirir. Bu değişikliğin geçerli olması için tüm geçerli komut satırı oturumlarını kapatıp yeniden açmalısınız. sqlcmd (ODBC) kaldırılmaz ve yürütülebilir dosyanın tam yolu belirtilerek kullanılabilir. Ayrıca, hangi önceliklerin öncelikli olduğunu belirtmek için PATH değişkeninizi güncelleştirebilirsiniz. Windows 11'de bunu yapmak için Sistem ayarları açın ve > hakkında bölümüne gidin. sistem özellikleri açıldığında, Ortam Değişkenleri düğmesini seçin. Alt yarıda, Sistem değişkenlerialtında Yol öğesini seçin ve ardından Düzenleseçeneğini seçin. sqlcmd (Go) konumu C:\Program Files\sqlcmdönce (C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn varsayılandır) olarak kaydedilirse, sqlcmd (Go) kullanılır. sırasını tersine çevirerek sqlcmd (ODBC) tekrar varsayılan yapabilirsiniz.

sqlcmd'yi indirme ve yükleme

sqlcmd (Go), Microsoft Windows, macOS ve Linux'ta platformlar arası yüklenebilir. 1.6'dan yeni sürümler tüm paket yöneticilerinde kullanılamayabilir. Mevcut olmaları için henüz tahmini bir tarih yok.

winget (Windows Paket Yöneticisi CLI)

  1. Henüz sahip değilseniz Windows Paket Yöneticisi İstemcisi yükleyin.

  2. sqlcmd (Go) yüklemek için aşağıdaki komutu çalıştırın.

    winget install sqlcmd
    

Çikolatalı

  1. Henüz sahip değilseniz Chocolatey yükleyin.

  2. sqlcmd (Go) yüklemek için aşağıdaki komutu çalıştırın.

    choco install sqlcmd
    

Doğrudan indirme

  1. GitHub kod deposundaki -windows-amd64.zip (Go) -windows-arm.zip sürümünden ilgili veya varlığını indirin.

  2. İndirilen zip klasöründen sqlcmd.exe dosyasını ayıklayın.

Önceden yüklenmiş

Azure Cloud Shell

Varsayılan olarak önceden yüklendiği için Azure Cloud Shell'den sqlcmd yardımcı programını deneyebilirsiniz:

Azure Data Studio

Azure Data Studio'nde SQLCMD deyimlerini çalıştırmak için düzenleyici araç çubuğundan SQLCMD Etkinleştir seçeneğini seçin.

SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) SQLCMD deyimlerini çalıştırmak için üst gezinti Sorgu Menüsü açılan listesinden SQLCMD Modu'nu seçin.

SSMS, SqlClientnormal ve SQLCMD modunda yürütülmesi için Microsoft .NET Framework kullanır. komut satırından sqlcmd çalıştırıldığında sqlcmd ODBC sürücüsünü kullanır. Farklı varsayılan seçenekler uygulanabileceğinden, SQLCMD Modunda ve sqlcmd yardımcı programındaki SSMS'de aynı sorguyu yürütürken farklı davranışlar görebilirsiniz.

TDS 8.0 desteği

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

Sözdizimi

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.

sqlcmd söz dizimi ve kullanımı hakkında daha ayrıntılı bilgi için bkz. odbc sqlcmd söz dizimi .

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

sqlcmd (Go) yardımcı programındaki çeşitli anahtarlar ve davranışlar değiştirilmiştir. Geriye dönük uyumluluk için eksik bayrakların en güncel listesi için Geri uyumluluk bayraklarının uygulanmasına öncelik verilmesi konulu GitHub tartışmasını ziyaret edin.

  • sqlcmd (Go) önceki sürümlerinde -P anahtarı geçici olarak kaldırılmıştır ve SQL Server Kimlik Doğrulaması parolaları yalnızca şu mekanizmalar aracılığıyla sağlanabilirdi:

    • SQLCMDPASSWORD ortam değişkeni
    • :CONNECT komutu
    • İstendiğinde, kullanıcı bağlantıyı tamamlamak için parolayı yazabilir
  • -r, bir 0 veya 1 bağımsız değişkeni gerektirir.

  • -R anahtarı kaldırılır.

  • -I anahtarı kaldırılır. Tırnaklı tanımlayıcı davranışını devre dışı bırakmak için betiklerinize SET QUOTED IDENTIFIER OFF ekleyin.

  • -N, true, false veya disable dize değerlerinden biri olabilecek bir dize değeri alır ve şifreleme seçimini belirtir. (default parametresinin atlanmasıyla aynıdır)

    • -N ve -C sağlanmazsa, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması müzakeresi yapar.
    • -N sağlanmışsa ancak -C sağlanmadıysa, sqlcmd sunucu sertifikasının doğrulanması gerekir. Şifreleme için false değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.
    • Hem -N hem de -C sağlanırsa, sqlcmd şifreleme anlaşması için değerlerini kullanır.
    • İstemci/sunucu şifreleme anlaşması hakkında daha fazla bilgi MS-TDS PRELOGINbulunabilir.

    Önemli

    SQL Server 2025 (17.x) Önizlemesinde, -N olabilir o (için optional), m (varsayılan olan mandatory için) veya s (için strict). Eğer siz -N eklemezseniz, -Nm (mandatory için) varsayılandır. Bu, SQL Server 2022 (16.x) ve önceki sürümlerinden itibaren önemli bir değişikliktir.

  • -u Oluşturulan Unicode çıkış dosyasında UTF-16 Little-Endian Byte-order işareti (BOM) yazılmıştır.

  • 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ış, EXIT(query) tarafından çalıştırılan sorgunun birden çok satıra yayılmasına olanak tanıyan ODBC sürümünden farklıdır.

sqlcmd (Go) yardımcı programındaki bağlantılar TCP bağlantılarıyla sınırlıdır. Şu anda adlandırılmış kanallar go-mssqldb sürücüsünde desteklenmiyor.

Geliştirme

  • :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. -F vertical Ayarlamak için komut satırı anahtarını kullanın. SQLCMDFORMAT betik değişkeni de bunu denetler.

    Not

    Bu, -F ile birlikte sertifikada konak adını belirtmek için kullanılan sqlcmd (ODBC) anahtarından farklıdır.

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 Evet Hayı
-C Evet Evet
-d db_name Evet Evet
-D Evet Evet
-l login_timeout Evet Evet
-E Evet Evet
-g Evet Evet
-G Evet Evet
-H workstation_name Evet Evet
-j Evet Evet
-K uygulama_niyeti Evet Evet
-M multisubnet_failover Evet Evet
-N Evet Evet
-P parola Evet Evet
-S [protokol:]sunucu[\instance_name][,bağlantı noktası] Evet Evet
-U giriş_kullanıcı_adı Evet Evet
-z new_password Evet Evet
-Z new_password Evet Evet
Giriş/çıkış seçenekleri
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] Evet Evet
-i input_file[,input_file2...] Evet Evet
-o output_file Evet Evet
-r[0 | 1] Evet Evet
-R Evet Evet
-u Evet Evet
Sorgu yürütme seçenekleri
-e Evet Evet
-Ben Evet Evet
-q "komut satırı sorgusu" Evet Evet
-Q "cmdline sorgusu" Evet Evet
-t query_timeout Evet Evet
-v var = değer [ var = değer... ] Evet Hayı
-x Evet Evet
Biçim seçenekleri
-h üst bilgileri Evet Evet
-k [1 | 2] Evet Evet
-s col_separator Evet Evet
-w screen_width Evet Evet
-W Evet Evet
-y variable_length_type_display_width Evet Evet
-Y sabit_uzunluk_tipi_görüntü_genişliği Evet Evet
Hata raporlama seçenekleri
-b Evet Evet
-m error_level Evet Evet
-V hata_ciddiyet_düzeyi Evet Evet
Çeşitli seçenekler
-a paket_büyüklüğü Evet Evet
-c batch_terminator Evet Evet
-L[c] Evet Hayı
-p[1] Evet Evet
-X[1] Evet Evet
-? Evet Evet

-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. Bu tür bir bağlantı, sunucu sorunlarını gidermek için kullanılır. 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. -Akullanarak Azure SQL Veritabanı'na bağlanırken mantıksal SQL sunucusunda yönetici olmanız gerekir. DAC, Microsoft Entra yöneticisi tarafından kullanılamaz.

Not

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

-C

Bu seçenek istemci tarafından sunucu sertifikasına doğrulama olmadan örtük olarak güvenecek şekilde yapılandırmak için kullanılır. 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:

  • -N ve -C sağlanmazsa, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması müzakeresi yapar.
  • -N sağlanmışsa ancak -C sağlanmadıysa, sqlcmd sunucu sertifikasının doğrulanması gerekir. Şifreleme için false değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.
  • Hem -N hem de -C sağlanırsa, 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.

Not

-D seçeneği yalnızca Linux ve macOS istemcilerinde kullanılabilir. Windows istemcilerinde, artık kullanılmayan ve dikkate alınmayan eski bir seçeneği ifade eder.

-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ı veya Azure Synapse Analytics'e bağlanma ve Microsoft Entra Id kullanarak 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 65534arasında bir sayı olmalıdır. Sağlanan 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.

Not

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.

-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 sqlcmd -?'ı yürütün.

-G

Bu seçenek istemci tarafından Azure SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanırken kullanıcının Kimliğinin Microsoft Entra kimlik doğrulamasıyla doğrulandığını belirtmek için kullanılır. 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 sqlcmd -?'ı yürütün. 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

İş istasyonu adı. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDWORKSTATIONayarlar. İş istasyonu adı, hostname katalog görünümünün sys.sysprocesses sütununda listelenir ve sp_whosaklı yordamı kullanılarak döndürülebilir. Bu seçenek belirtilmezse, varsayılan değer geçerli bilgisayar adıdır. Bu ad, farklı sqlcmd oturumlarını tanımlamak için kullanılabilir.

-j

Ham hata iletilerini ekrana yazdırır.

-K uygulama_niyeti

Sunucuya bağlanırken uygulama iş yükü türünü bildirir. Şu anda desteklenen tek değer ReadOnly. -K belirtilmezse, sqlcmd bir kullanılabilirlik grubundaki ikincil çoğaltmaya 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.

Not

-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. -M belirtilmezse -M kapalıdır.

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

Not

-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

Bu seçenek, istemci tarafından şifreli bir bağlantı istemek için kullanılır.

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

Not

Linux ve macOS'ta, [s|m|o]sqlcmd 18.0'a eklendi. -N (için o), optional, m (için mandatory, varsayılan) veya s (için strict) olabilir. SQL Server 2025 (17.x) Önizleme sürümünde , -N (için-Nm) öğesini eklemezseniz mandatoryvarsayılan değerdir. Bu, -No'nin varsayılan olduğu SQL Server 2022 (16.x) ve önceki sürümlerinden farklı bir değişikliktir.

  • -N ve -C sağlanmazsa, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması müzakeresi yapar.

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

  • Hem -N hem de -C sağlanırsa, sqlcmd şifreleme anlaşması için değerlerini kullanır.

  • sqlcmd'de (ODBC), sertifikada konak adını belirtmek için kullanın-F. Örneğin:

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

    Not

    Bu, sonuçları dikey biçim kullanarak yazdırmak için kullanılan -F (Go) anahtarından farklıdır.

-P parola

Kullanıcı tarafından belirtilen bir parola. Parolalar büyük/küçük harfe duyarlıdır. -U Seçenek kullanılırsa, -P seçenek kullanılmaz ve SQLCMDPASSWORD ortam değişkeni ayarlanmadıysa, sqlcmd kullanıcıdan parola ister. Null (boş) parola kullanılmasını önermeyiz, ancak parametre değeri ("") için bitişik çift tırnak işareti çifti kullanarak null parolayı belirtebilirsiniz.

Önemli

-P kullanımı güvensiz olarak kabul edilmelidir. 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 kullanmanızı öneririz.

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 istemine aşağıdakileri 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.

Not

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ğiyle -E seçeneği kullanılırsa bir hata iletisi oluşturulur.

-P seçeneğinin ardından birden fazla bağımsız değişken gelirse, bir hata mesajı üretilir ve program sona erer.

Ö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ğıda, erişim belirteci edinen örnek bir komut verilmiştir. 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. sqlcmd betik değişkenini ayarlar SQLCMDSERVER.

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. Hiçbir sunucu bilgisayarı belirtilmezse, sqlcmd yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Bu seçenek, ağdaki uzak bir bilgisayardan sqlcmd yürütürken 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.

Not

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.

Not

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.

-U seçeneği -E seçeneğiyle birlikte kullanılıyorsa (bu makalenin ilerleyen bölümlerinde açıklanmaktadı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 yeni_şifre

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 yeni_şifre

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ş/çı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ı belirtilmezse, 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. -u Seçenek belirtilirse, çıkış her zaman küçük uçlu Unicode olur.

  • Hiçbir çıkış dosyası belirtilmezse, çı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ında olduğu 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.

Not

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. Sırayla okunan ve işlenen birden çok dosya belirtilebilir. Dosya adları arasında boşluk kullanmayın. sqlcmd, belirtilen tüm dosyaların mevcut olup olmadığını görmek için önce denetler. Bir veya daha fazla dosya yoksa sqlcmd çıkar. -i ve -Q/-q seçenekleri birbirini dışlar.

Not

-i seçeneğini ve ardından bir veya daha fazla ek parametre kullanırsanız, parametre ile değer arasında bir boşluk kullanmanız gerekir. Bu, sqlcmd (Go) 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çenek birden çok kez kullanılabilir:

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

-o çıktı_dosyası

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

-u belirtilirse, output_file Unicode biçiminde depolanır. Dosya adı geçerli değilse bir hata iletisi oluşturulur ve sqlcmd kapatılır. sqlcmd, aynı dosyaya birden çok sqlcmd işleminin eşzamanlı olarak yazıldığını desteklemez. Dosya çıktısı bozuk veya yanlış. -f seçeneği de dosya biçimleriyle ilgilidir. Dosya bulunmadığında oluşturulur. Önceki sqlcmd oturumundan aynı ada sahip bir dosyanın üzerine yazılır. Burada belirtilen dosya stdout dosyası değil. bir stdout dosyası belirtilirse, bu dosya kullanılmaz.

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.

Not

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

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.

Not

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.

Not

sqlcmd (Go) yardımcı programı için, oluşturulmuş Unicode çıkış dosyasına UTF-16 Little-Endian Bayt sırası işareti (BOM) yazılmıştır.

Sorgu yürütme seçenekleri

-e

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

-Ben

Şunlar için geçerlidir: Yalnızca ODBC sqlcmd.

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

Not

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. Birden çok noktalı virgülle ayrılmış sorgu yürütülebilir. Aşağıdaki örnekte gösterildiği gibi sorgunun çevresinde tırnak işaretleri kullanın.

Komut istemine şunu yazın:

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;"

Önemli

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

-b bu seçenekle birlikte belirtilirse, sqlcmd bir hata oluştuğunda sonlanır. -b 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. Birden çok noktalı virgülle ayrılmış sorgu yürütülebilir.

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

Komut istemine şunu yazın:

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;"

Önemli

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

-b bu seçenekle birlikte belirtilirse, sqlcmd bir hata oluştuğunda sonlanır. -b bu makalenin başka bir yerinde açıklanmıştır.

-t sorgu_zaman_aşımı

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 belirtilmezse komut zaman aşımına neden olmaz. query_timeout1 ile 65534arasında bir sayı olmalıdır. Sağlanan değer sayısal değilse veya bu aralığa girmiyorsa sqlcmd bir hata iletisi oluşturur.

Not

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 kullanılabilecek 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. Belirtilen değerlerden herhangi birinde hatalar varsa, 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 başlıklar

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ırmaktır. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDHEADERSayarlar. Üst bilgilerin yazdırılmaması gerektiğini belirtmek için -1 kullanın. Geçerli olmayan herhangi bir değer sqlcmd 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 kolon_ayırıcı

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 ekran_genişliği

Çı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

Bu seçenek bir sütundan sondaki boşlukları kaldırır. Başka bir uygulamaya aktarılacak verileri hazırlarken bu seçeneği -s seçeneğiyle birlikte kullanın. -y veya -Y seçenekleriyle kullanılamaz.

-y değişken_uzunluk_tipi_görüntü_genişliği

sqlcmd betik değişkenini ayarlar SQLCMDMAXVARTYPEWIDTH. Varsayılan değer 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(maksimum)
  • nvarchar(max)
  • varbinary(maks)
  • XML
  • kullanıcı tanımlı veri türlerini (UDT)
  • Metin
  • ntext
  • resim

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

Dikkat

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üntü_genişliği

sqlcmd betik değişkenini ayarlar SQLCMDMAXFIXEDTYPEWIDTH. Varsayılan değer 0 (sınırsız). 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. SQL Server hata iletisinin önem düzeyi 10'dan büyük olduğunda ERRORLEVEL değişkenine döndürülen değer 1; aksi takdirde, döndürülen değer 0. -V seçeneği ayarlanırsa, -b seçeneği ile birlikte, önem düzeyi kullanılarak ayarlanan değerlerden düşükse, -V 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 error_level

stdout'a gönderilecek hata iletilerini denetler. Önem düzeyi bu düzeyden büyük veya bu düzeye eşit olan iletiler gönderilir. Bu değer -1olarak ayarlandığında, bilgilendiren iletiler de dahil olmak üzere tüm iletiler gönderilir. -m ile -1arasında boşluklara izin verilmez. Ö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

ERRORLEVEL değişkenini ayarlamak için kullanılan ö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ı, ERRORLEVEL değişkeninin değerini test etmek için kullanılabilir.

Çeşitli seçenekler

-a paket_büyüklüğü

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, GO komutları arasında çok sayıda Transact-SQL deyimi içeren 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 toplu_sonuçlandırıcı

Pake terminatörünü belirtir. Varsayılan olarak komutlar sonlandırılır ve tek başına bir satıra GO sözcüğü yazılarak SQL Server'a gönderilir. 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 parametre diğer parametrelerle birlikte kullanılamaz. Listelenebilen en fazla sunucu bilgisayarı sayısı 3000'dir. Sunucu listesi, arabellek kapasitesi nedeniyle kesilirse bir uyarı mesajı görüntülenir.

Not

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ı parametre c belirtilirse, çıkış Servers: üst bilgi satırı olmadan 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.)

Nerede:

  • 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ı parametre 1 belirtilirse, istatistiklerin çıkış biçimi, bir elektronik tabloya kolayca aktarılabilen veya bir betik tarafından işlenebilen, iki nokta ile ayrılmış bir formatta olur.

İsteğe bağlı parametre 1 dışında bir değerse bir hata oluşturulur ve sqlcmd sonlandırı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ı parametre 1 belirtilirse, 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

-X seçeneği belirtilirse, ortam değişkenlerinin sqlcmd'a 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.

Not

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

Açıklamalar

Seçeneklerin söz dizimi bölümünde gösterilen sırayla kullanılması gerekmez.

Not

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

Birden çok sonuç döndürülürse sqlcmd, toplu işlemdeki her sonuç kümesi arasında boş bir satır yazdırır. Ayrıca, <x> rows affected iletisi yürütülen deyime uygulanmadığında görünmez.

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.

Not

-l, -Q, -Z veya -i seçenekleri, yürütüldükten sonra sqlcmd çıkmasına neden olur.

Tüm bağımsız değişkenler ve genişletilmiş değişkenler dahil olmak üzere, komut ortamındaki sqlcmd komut satırının toplam uzunluğu (örneğin cmd.exe veya bash), temel işletim sistemi tarafından belirlenir.

Değişken önceliği (düşük-yüksek)

  1. Sistem düzeyinde ortam değişkenleri
  2. Kullanıcı düzeyinde ortam değişkenleri
  3. Komut kabuğu (SET X=Y), sqlcmd çalıştırmadan önce komut isteminde ayarlanır.
  4. sqlcmd -v X=Y
  5. :Setvar X Y

Not

Ortam değişkenlerini görüntülemek için, Denetim Masası'nde Sistem açın ve gelişmiş sekmesini seçin.

sqlcmd betik değişkenleri

Değişken İlgili seçenek R/W Varsayılan
SQLCMDUSER -U R ""
SQLCMDPASSWORD -P -- ""
SQLCMDSERVER -S R VarsayılanYerelÖrnek
SQLCMDWORKSTATION -H R Bilgisayar Adı
SQLCMDDBNAME -d R ""
SQLCMDLOGINTIMEOUT -l R/W "8" (saniye)
SQLCMDSTATTIMEOUT -t R/W "0" = süresiz olarak bekleyin
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" = sınırsız
SQLCMDEDITOR R/W edit.com
SQLCMDINI R ""
SQLCMDUSEAAD -G R/W ""
  • SQLCMDUSER kullanıldığında SQLCMDPASSWORD, SQLCMDSERVERve :Connect ayarlanır.

  • R değerin program başlatma sırasında yalnızca bir kez ayarlanabileceğini gösterir.

  • R/W değerin :setvar komutu kullanılarak değiştirilebileceğini ve sonraki komutların yeni değerden etkilendiğini gösterir.

sqlcmd komutları

sqlcmdiçindeki Transact-SQL deyimlerine ek olarak aşağıdaki komutlar da kullanılabilir:

  • GO [ <count> ]
  • :List
  • [:]RESET
  • :Error
  • [:]ED 1
  • :Out
  • [:]!!
  • :Perftrace
  • [:]QUIT
  • :Connect
  • [:]EXIT
  • :On Error
  • :r
  • :Help
  • :ServerList 1
  • :XML [ ON | OFF ] 1
  • :Setvar
  • :Listvar

1 Linux veya macOS'ta desteklenmez.

sqlcmd komutlarını kullanırken aşağıdakilere dikkat edin:

  • dışındaki tüm GO komutlarının başına iki nokta (:) eklenmelidir.

    Önemli

    Mevcut osql betikleriyle geriye dönük uyumluluğu korumak için, bazı komutlar :ile belirtilen iki nokta olmadan tanınır.

  • sqlcmd komutları yalnızca satırın başında göründüklerinde tanınır.

  • Tüm sqlcmd komutları büyük/küçük harfe duyarlı değildir.

  • Her komut ayrı bir satırda olmalıdır. Bir komutun ardından bir Transact-SQL deyimi veya başka bir komut eklenemez.

  • Komutlar hemen yürütülür. Onlar, Transact-SQL deyimleri gibi yürütme arabelleğine yerleştirilmezler.

Komutları düzenleme

[:]ED

Metin düzenleyicisini başlatır. Bu düzenleyici geçerli Transact-SQL toplu işlemini veya son yürütülen toplu işlemi düzenlemek için kullanılabilir. Son yürütülen toplu işlemi düzenlemek için, ED komutunun son toplu işlemin yürütülmesi tamamlandıktan hemen sonra yazılması gerekir.

Metin düzenleyicisi SQLCMDEDITOR ortam değişkeni tarafından tanımlanır. Varsayılan düzenleyici Edit. Düzenleyiciyi değiştirmek için SQLCMDEDITOR ortam değişkenini ayarlayın. Örneğin, düzenleyiciyi Microsoft Not Defteri olarak ayarlamak için komut istemine şunu yazın:

SET SQLCMDEDITOR=notepad

[:]SIFIRLAMA

Komut önbelleğini temizler.

Liste

Deyim önbelleğinin içeriğini yazdırır.

Değişken

:Setvar <var> [ "value" ]

sqlcmd betik değişkenlerini tanımlar. Komut dosyası değişkenleri şu biçime sahip olur: $(VARNAME).

Değişken adları büyük/küçük harfe duyarlı değildir.

Betikleme değişkenleri şu şekillerde ayarlanabilir:

  • Komut satırı seçeneğini örtük olarak kullanma. Örneğin, -l seçeneği SQLCMDLOGINTIMEOUTsqlcmd değişkenini ayarlar.
  • açıkça :Setvar komutunu kullanarak.
  • sqlcmdçalıştırmadan önce bir ortam değişkeni tanımlayarak.

Not

-X seçeneği, ortam değişkenlerinin sqlcmd'a geçirilmesini engeller.

:Setvar ve ortam değişkeni kullanılarak tanımlanan bir değişkenin adı aynıysa, :Setvar kullanılarak tanımlanan değişken önceliklidir.

Değişken adları boş boşluk karakterleri içermemelidir.

Değişken adları, $(var)gibi bir değişken ifadesiyle aynı forma sahip olamaz.

Betik değişkeninin dize değeri boş boşluklar içeriyorsa, değeri tırnak içine alın. Betik değişkeni için bir değer belirtilmezse, betik değişkeni bırakılır.

:Listvar

Şu anda ayarlanmış olan betik oluşturma değişkenlerinin listesini görüntüler.

Not

Yalnızca sqlcmd tarafından ayarlanan betik değişkenleri ve komut kullanılarak ayarlanan :Setvar değişkenler görüntülenir.

Çıkış komutları

:Hata <dosya adı> | STDERR | STDOUT

Tüm hata çıktılarını dosya adıtarafından belirtilen dosyaya stderr veya stdoutyönlendirin. :Error komutu betikte birden çok kez görünebilir. Varsayılan olarak, hata çıktısı stderrgönderilir.

  • dosya adı

    Çıktıyı alan bir dosya oluşturur ve açar. Dosya zaten varsa, sıfır bayt olarak kesilir. dosya izinler veya başka nedenlerle kullanılamıyorsa, çıkış değiştirilmez ve son belirtilen veya varsayılan hedefe gönderilir.

  • STDERR

    Hata çıkışını stderr akışına yönlendirir. Bu yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.

  • STDOUT

    Hata çıkışını stdout akışına yönlendirir. Bu yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.

:Out <dosya adı> | STDERR | STDOUT

Tüm sorgu sonuçlarını dosya adıyla belirtilen dosyaya stderr veya stdoutyönlendirir. Varsayılan olarak, çıktı stdout'a gönderilir. Dosya zaten varsa, sıfır bayt olarak kesilir. :Out komutu betikte birden çok kez görünebilir.

:Perftrace <dosya adı> | STDERR | STDOUT

Tüm performans izleme bilgilerini dosya adıyla belirtilen dosyaya stderr veya stdoutyönlendirir. Varsayılan olarak performans izleme çıktısı stdout'a gönderilir. Dosya zaten varsa, sıfır bayt olarak kesilir. :Perftrace komutu betikte birden çok kez görünebilir.

Yürütme denetimi komutları

:Hata Durumunda [ çıkış | yoksay ]

Betik veya toplu işlem sırasında bir hata oluştuğunda yapılacak işlemi ayarlar.

exit seçeneği kullanıldığında sqlcmd uygun hata değeriyle çıkar.

ignore seçeneği kullanıldığında, sqlcmd hatayı yoksayar ve toplu işlemi veya betiği yürütmeye devam eder. Varsayılan olarak, bir hata iletisi yazdırılır.

[:]İstifa etmek

sqlcmd çıkmasına neden olur.

[:]EXIT [ ( ifade ) ]

SELECT deyiminin sonucunu sqlcmd'den dönüş değeri olarak kullanmanızı sağlar. Sayısalsa, son sonuç satırının ilk sütunu 4 baytlık tamsayıya (uzun) dönüştürülür. MS-DOS, Linux ve macOS, alt baytı üst süreç veya işletim sistemi hata düzeyine iletir. Windows 2000 ve sonraki sürümleri 4 baytlık tamsayının tamamını geçirir. Söz dizimi :EXIT(query).

Örneğin:

:EXIT(SELECT @@ROWCOUNT)

:EXIT parametresini bir toplu iş dosyasının parçası olarak da ekleyebilirsiniz. Örneğin, komut istemine şunu yazın:

sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"

sqlcmd yardımcı programı, parantezler (()) arasındaki her şeyi sunucuya gönderir. Sistem saklı yordamı bir küme seçer ve bir değer döndürürse, yalnızca seçim döndürülür. Parantezler arasında hiçbir şey olmayan :EXIT() deyimi, batch işlemde ondan önceki her şeyi yürütür ve ardından geri dönüş değeri vermeden sonlandırır.

Yanlış bir sorgu belirtildiğinde, sqlcmd dönüş değeri olmadan çıkış yapar.

EXIT biçimlerinin listesi aşağıdadır:

  • :EXIT

    Toplu işlemi yürütmez, hemen sona erer ve hiçbir değer döndürmez.

  • :EXIT( )

    Toplu işlemi yürütür, ardından çıkar ve bir değer döndürmez.

  • :EXIT(query)

    Sorguyu içeren toplu işlemi yürütür ve sorgunun sonuçlarını döndürdüğünde sonlanır.

RAISERROR bir sqlcmd betiği içinde kullanılırsa ve 127 durumu oluşursa, sqlcmd sonlanır ve ileti kimliğini istemciye geri bildirir. Örneğin:

RAISERROR(50001, 10, 127)

Bu hata, sqlcmd betiğinin sona erip istemciye 50001 ileti kimliğini döndürmesine neden olur.

-1'dan -99'ye kadar olan dönüş değerleri SQL Server tarafından ayrılmıştır ve sqlcmd aşağıdaki ek dönüş değerlerini tanımlar:

Dönüş değeri Açıklama
-100 Dönüş değeri seçmeden önce hatayla karşılaşıldı.
-101 Dönüş değeri seçilirken satır bulunamadı.
-102 Dönüş değeri seçilirken dönüştürme hatası oluştu.

GİT [sayım]

GO hem toplu iş sonunu hem de önbelleğe alınmış Transact-SQL deyimlerinin yürütülmesini bildirir. İşlem, ayrı partiler olarak birden çok kez yürütülür. Tek bir toplu işte birden fazla değişken bildiremezsiniz.

Çeşitli komutlar

:r <dosya adı>

Belirtilen dosya adı içindeki ek Transact-SQL deyimleri ve sqlcmd komutlarını deyim önbelleğine ayrıştırır. dosya adı, sqlcmd çalıştırıldığı başlangıç dizinine göre okunur.

Dosyada GOtarafından takip edilmeen Transact-SQL deyimleri varsa, GOizleyen satıra :r girmeniz gerekir.

Dosya, bir toplu iş sonlandırıcısı ile karşılaşıldıktan sonra okunur ve yürütülür. Birden çok :r komutu yayımlayabilirsiniz. Dosya, toplu iş sonlandırıcısı da dahil olmak üzere herhangi bir GO komutu içerebilir.

Not

Etkileşimli modda görüntülenen satır sayısı, karşılaşılan her :r komut için bir artırılır. :r komutu, liste komutunun çıkışında görünür.

SunucuListesi

Yerel olarak yapılandırılmış sunucuları ve ağda yayınlayan sunucuların adlarını listeler.

:Connect server_name[\instance_name] [-l zaman aşımı] [-U kullanıcı_adı [-P parola]]

SQL Server örneğine bağlanır. Ayrıca geçerli bağlantıyı kapatır.

Zaman aşımı seçenekleri:

Değer Davranış
0 Sonsuza kadar bekle
n>0 n saniye bekleyin

SQLCMDSERVER betik değişkeni geçerli etkin bağlantıyı yansıtır.

zaman aşımı belirtilmezse, SQLCMDLOGINTIMEOUT değişkeninin değeri varsayılan değerdir.

Yalnızca user_name belirtilirse (seçenek olarak veya ortam değişkeni olarak), kullanıcıdan parola girmesi istenir. SQLCMDUSER veya SQLCMDPASSWORD ortam değişkenleri ayarlanmışsa kullanıcılara sorulmaz. Seçenekler veya ortam değişkenleri sağlamazsanız, oturum açmak için Windows Kimlik Doğrulama modu kullanılır. Örneğin, tümleşik güvenlik kullanarak SQL Server instance1myserverbir örneğe bağlanmak için aşağıdaki komutu kullanırsınız:

:connect myserver\instance1

Betik oluşturma değişkenlerini kullanarak varsayılan myserver örneğine bağlanmak için aşağıdaki ayarları kullanırsınız:

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

[:]!! komutu

İşletim sistemi komutlarını yürütür. bir işletim sistemi komutu yürütmek için, iki ünlem işareti (!!) ve ardından işletim sistemi komutunu içeren bir satır başlatın. Örneğin:

:!! dir

Not

komut, sqlcmd çalıştığı bilgisayarda yürütülür.

:XML [ ON | KAPALI ]

Daha fazla bilgi için bu makaledeki XML Çıktı Biçimi ve JSON Çıktı Biçimi konusuna bakın.

:Yardım

sqlcmd komutlarını ve her komutun kısa bir açıklamasını listeler.

sqlcmd dosya adları

sqlcmd giriş dosyaları -i seçeneği veya :r komutuyla belirtilebilir. Çıkış dosyaları seçeneği veya -o, :Errorve :Out komutları ile :Perftrace belirtilebilir. Bu dosyalarla çalışmaya yönelik bazı yönergeler aşağıdadır:

  • :Error, :Outve :Perftrace ayrı dosya adı değerleri kullanmalıdır. Aynı dosya adı kullanılırsa, komutlardan gelen girişler karıştırılabilir.

  • Uzak sunucuda bulunan bir giriş dosyası yerel bilgisayardaki sqlcmd çağrılırsa ve dosya :Out c:\OutputFile.txtgibi bir sürücü dosyası yolu içeriyorsa, çıkış dosyası uzak sunucuda değil yerel bilgisayarda oluşturulur.

  • Geçerli dosya yolları şunlardır: C:\<filename>, \\<Server>\<Share$>\<filename>ve "C:\Some Folder\<file name>". Yolda boşluk varsa tırnak işaretlerini kullanın.

  • Her yeni sqlcmd oturumu, aynı adlara sahip mevcut dosyaların üzerine yazar.

Bilgilendiren iletiler

sqlcmd sunucu tarafından gönderilen tüm bilgilendirici mesajları yazdırır. Aşağıdaki örnekte, Transact-SQL deyimleri yürütüldükten sonra bilgilendirici bir mesaj yazdırılır.

sqlcmdbaşlatın. sqlcmd komut istemine sorguyu yazın:

USE AdventureWorks2022;
GO

ENTER tuşuna bastığınızda aşağıdaki bilgi iletisi yazdırılır:

Changed database context to 'AdventureWorks2022'.

Transact-SQL sorgularından çıkış biçimi

sqlcmd önce seçme listesinde belirtilen sütun adlarını içeren bir sütun üst bilgisini yazdırır. Sütun adları, SQLCMDCOLSEP karakteri kullanılarak ayrılır. Varsayılan olarak, bu bir boşlukdur. Sütun adı sütun genişliğinden daha kısaysa, verinin çıktısı sonraki sütuna kadar boşluklarla doldurulur.

Bu satırın ardından bir dizi tire karakteri olan ayırıcı çizgi gelir. Aşağıdaki çıktıda bir örnek gösterilmektedir.

sqlcmdbaşlatın. sqlcmd komut istemine sorguyu yazın:

USE AdventureWorks2022;

SELECT TOP (2) BusinessEntityID,
               FirstName,
               LastName
FROM Person.Person;
GO

ENTERbastığınızda aşağıdaki sonuç kümesi döndürülür.

BusinessEntityID FirstName    LastName
---------------- ------------ ----------
285              Syed         Abbas
293              Catherine    Abel
(2 row(s) affected)

Sütun yalnızca dört karakter genişliğinde olmasına rağmen, BusinessEntityID daha uzun sütun adını barındıracak şekilde genişler. Varsayılan olarak, çıkış 80 karakterde sonlandırılır. Bu genişlik, -w seçeneği kullanılarak veya SQLCMDCOLWIDTH betik değişkeni ayarlanarak değiştirilebilir.

XML çıkış biçimi

FOR XML yan tümcesinin sonucu olan XML, sürekli bir akış halinde ve biçimlendirilmemiş olarak üretilir.

XML çıktısı beklerken şu komutu kullanın: :XML ON.

Not

sqlcmd hata iletilerini normal biçimde döndürür. Hata iletileri, XML formatında XML metin akışında da çıktı olarak verilir. :XML ONkullanılarak sqlcmd bilgi mesajlarını görüntülemez.

XML modunu kapalı olarak ayarlamak için şu komutu kullanın: :XML OFF.

GO komutu verilmeden önce görüntülenmemelidir, çünkü :XML OFF komutu sqlcmd komutunu :XML OFF çevirir.

XML (akışlı) verileri ve satır kümesi verileri karıştırılamaz. :XML ON KOMUTU, XML akışlarını veren bir Transact-SQL deyimi yürütülmeden önce verilmediyse, çıkış bozuk olur. :XML ON komut verildikten sonra, normal satır kümeleri üreten Transact-SQL deyimlerini yürütemezsiniz.

Not

:XML komutu SET STATISTICS XML deyimini desteklemez.

JSON çıkış biçimi

JSON çıkışı beklerken şu komutu kullanın: :XML ON. Aksi takdirde, çıkış hem sütun adını hem de JSON metnini içerir. Bu çıktı geçerli JSON değil.

XML modunu kapalı olarak ayarlamak için şu komutu kullanın: :XML OFF.

Daha fazla bilgi için bu makaledeki XML Çıktı Biçimi bakın.

Microsoft Entra kimlik doğrulamayı kullanma

Microsoft Entra kimlik doğrulamayı kullanan örnekler:

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

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. -D seçeneği, sqlcmd veya bcp'nin DSN'de belirtilen sunucuya bağlanmasına neden olur.

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, ancak uzak sunucuya bağlanmak için sqlcmd veya bcp öğesinde SERVER bir değere ihtiyaç duyar. SERVER Öğe boşsa veya DSN'de yoksa, sqlcmd ve 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.

Aynı seçenek hem DSN'de hem de sqlcmd veya bcp komut satırında belirtilirse, 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 belirtilmişse, Kerberos kimlik doğrulaması kullanılır; kullanıcı adı (-U) ve parola (-P) verilirse dikkate alınmaz.

isql çağıran mevcut betikler, aşağıdaki diğer ad tanımlanarak sqlcmd kullanacak şekilde değiştirilebilir: 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 sqlcmd oturumunda olabildiğince çok işlem yapın, bir dizi oturum yerine.

  • Toplu iş veya sorgu yürütme için zaman aşımı değerlerini, toplu işlemi veya sorguyu yürütmek için gerekenden 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, kullanıcı tarafından düzeltilebilen genel hatalara işaret eder.

  • İşlem çıktıktan sonra çıkış kodunu ve DOS ERRORLEVEL değişkenini denetleyin. sqlcmd 'ı normal şekilde 0 döndürür, aksi takdirde ERRORLEVEL-Vtarafından yapılandırıldığı biçimde ayarlar. Başka bir deyişle, ERRORLEVEL SQL Server'dan bildirilen hata numarasıyla aynı değer olması beklenemez. Hata numarası, @@ERROR sistem işlevine karşılık gelen SQL Server'a özgü bir değerdir. ERRORLEVEL, sqlcmd’in neden sonlandırıldığına işaret eden, sqlcmd’e özgü bir değerdir ve bu değerin nasıl belirleneceği, belirtilen -b komut satırı bağımsız değişkeni tarafından 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.