SQLcmd Yardımcı Programı

sqlcmd yardımcı programı komut istemindeki Transact-SQL ifadelerini, sistem yordamlarını ve komut dosyalarını Sorgu Düzenleyicisi'ne, SQLCMD moduna, Windows komut dosyasına veya SQL Server Aracı işinin işletim sistemi (Cmd.exe) iş adımına girmenizi sağlar.Bu yardımcı program Transact-SQL toplu işlerini yürütmek için OLE DB kullanır.

Önemli notÖnemli

SQL Server Management Studio, Sorgu Düzenleyicisi'nde düzenli ve SQLCMD modunda yürütme için Microsoft .NET Framework SqlClient kullanır.sqlcmd komut satırından çalıştırıldığında, sqlcmd OLE DB sağlayıcısını kullanır.Farklı varsayılan seçenekler uygulandığından, aynı sorguyu SQL Server Management Studio içindeki SQLCMD modunda ve sqlcmd yardımcı programında yürüttüğünüzde farklı davranışlar görebilirsiniz.

Sözdizimi

sqlcmd 
[{ { -U login_id [ -P password ] } | –E trusted connection }] 

[ -N encrypt connection ][ -C trust the server certificate ]
[ -z new password ] [ -Z new password and exit]
[ -S [protocol:]server[\instance_name][,port] ] [ -H wksta_name ] [ -d db_name ]
[ -l login time_out ] [ -A dedicated admin connection] 
[ -i input_file ] [ -o output_file ]
[ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ]
[ -u unicode output] [ -r [ 0 | 1 ] msgs to stderr ] 
[ -R use client regional settings]
[ -q "cmdline query" ] [ -Q "cmdline query" and exit] 
[ -e echo input ] [ -t query time_out ] 
[ -I enable Quoted Identifiers ] 
[ -v var = "value"...] [ -x disable variable substitution ]
[ -h headers ][ -s col_separator ] [ -w column_width ] 
[ -W remove trailing spaces ]
[ -k [ 1 | 2 ] remove[replace] control characters ] 
[ -y display_width ] [-Y display_width ]
[ -b on error batch abort] [ -V severitylevel ] [ -m error_level ] 
[ -a packet_size ][ -c cmd_end ] 
[ -L [ c ] list servers[clean output] ] 
[ -p [ 1 ] print statistics[colon format]] 
[ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit] 
[ -? show syntax summary]

Komut satırı Seçenekleri

  • Oturum Açma İle İlgili Seçenekler

  • -Ulogin_id
    Kullanıcı oturum açma kimliğidir.

    Not

    OSQLUSER ortam değişkeni geriye doğru uyumluluk için kullanılabilir.SQLCMDUSER ortam değişkeni OSQLUSER ortam değişkenine göre önceliklidir.Bu, sqlcmd ve osql öğelerinin kesinti olmadan yan yana kullanılabileceği anlamına gelir.Ayrıca varolan osql komut dosyalarının çalışmaya devam ettiği anlamına da gelir.

    -U seçeneği veya -P seçeneği belirtilmemişse, sqlcmd, Microsoft Windows Kimlik Doğrulaması modunu kullanarak bağlanmayı dener.Kimlik doğrulaması sqlcmd çalıştıran kullanıcının Windows hesabına bağlıdır.

    -U seçeneği -E seçeneği (bu konuda daha sonra tanımlanacak olan) ile kullanılırsa, bir hata iletisi oluşturulur.–U seçeneği birden fazla bağımsız değişken tarafından takip ediliyorsa, bir hata iletisi oluşturulur ve program kapanır.

  • -Ppassword
    Kullanıcı tanımlı bir paroladır.Parolalar büyük/küçük harfe duyarlıdır.-U seçeneği kullanılırsa, -P seçeneği kullanılmazsa ve SQLCMDPASSWORD ortam değişkeni ayarlanmazsa, sqlcmd kullanıcıdan parola ister.Komut istemi sonunda -P, parola olmadan kullanılırsa sqlcmd varsayılan parolayı (NULL) kullanır.

    Güvenlik notuGüvenlik Notu

    Boş parola kullanmayın.Güçlü bir parola kullanın.Daha fazla bilgi için, bkz. Güçlü parolalar.

    Parola istemi konsola ilişkin parola istemi şu şekilde yazdırılarak görüntülenir: Password:

    Kullanıcı girişi gizlidir.Bu, hiçbir şeyin görüntülenmediği ve imlecin yerinde kaldığı anlamına gelir.

    SQLCMDPASSWORD ortam değişkeni geçerli oturum için varsayılan parola ayarlamanıza olanak tanır.Bu nedenle, parolaların toplu iş dosyalarında sabit kodlanmış olmaları gerekmez.

    Aşağıdaki örnekte öncelikle komut istemindeki SQLCMDPASSWORD değişkeni ayarlanır ve ardından sqlcmd yardımcı programına erişilir.Komut isteminde şunu yazın:

    SET SQLCMDPASSWORD= p@a$$w0rd

    Güvenlik notuGüvenlik Notu

    Parola bilgisayar monitörünü görebilen herkes tarafından görülebilir.

    Aşağıdaki komut istemine şunu yazın:

    sqlcmd

    Kullanıcı adı ve parola kombinasyonu yanlışsa, OLE DB sağlayıcısı hata iletisi oluşturur.

    Not

    OSQLPASSWORD ortam değişkeni geriye doğru uyumluluk için tutuldu.SQLCMDPASSWORD ortam değişkeni OSQLPASSWORD ortam değişkenine göre önceliklidir. Bu, sqlcmd ve osql öğelerinin kesinti olmadan yan yana kullanılabileceği ve eski komut dosyalarının çalışmaya devam edeceği anlamına gelir.

    -P seçeneği -E seçeneği ile kullanılırsa, hata iletisi oluşturulur.

    -P seçeneği birden fazla bağımsız değişken tarafından takip ediliyorsa, bir hata iletisi oluşturulur ve program kapanır.

  • -E trusted connection
    SQL Server öğesinde oturum açmak için kullanıcı adı ve parola kullanmak yerine güvenilir bağlantı kullanır.Varsayılan olarak -E belirtilmeden, sqlcmd güvenilir bağlantı seçeneğini kullanır.

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

  • -Nencrypt connection
    Bu anahtar istemci tarafından şifreli bir bağlantı isteği için kullanılır.Bu seçenek, ADO'ya eşdeğerdir.net seçeneği ENCRYPT = true.

  • -Ctrust the server certificate
    Bu anahtar istemci tarafından sunucu sertifikasına doğrulama olmadan örtük olarak güvenmek için yapılandırılmak üzere kullanılır.Bu seçenek, ADO'ya eşdeğerdir.net seçeneği TRUSTSERVERCERTIFICATE = true.

  • -z new password
    Parolayı değiştir:

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

  • -Z new password and exit
    Parolayı değiştir ve çık:

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

  • -S [protocol:]server[**\instance_name][,**port]
    Bağlanacağı SQL Server örneğini belirtir.sqlcmd komut dosyası değişkeni SQLCMDSERVER öğesini ayarlar.

    Sunucu bilgisayarda SQL Server varsayılan örneğine bağlanmak için server öğesini belirtin.Sunucu bilgisayarda SQL Server adlandırılmış örneğine bağlanmak için server[**\**instance_name] öğesini belirtin.Sunucu bilgisayar belirtilmezse sqlcmd, yerel bilgisayarda SQL Server varsayılan örneğine bağlanır.Ağdaki uzak bir bilgisayardan sqlcmd öğesini yürütürken bu seçenek gerekir.

    protocol; tcp (TCP/IP), lpc (paylaşılan bellek) veya np (adlandırılmış kanallar) olabilir.Protokoller hakkında daha fazla bilgi için bkz.: Ağ Protokolü seçme.

    sqlcmd öğesini başlattığınızda server[**\**instance_name] belirmediyseniz, SQL Server denetler ve SQLCMDSERVER ortam değişkenini kullanır

    Not

    OSQLSERVER ortam değişkeni geriye doğru uyumluluk için tutuldu.SQLCMDSERVER ortam değişkeni OSQLSERVER ortam değişkenine göre önceliklidir. Bu, sqlcmd ve osql öğelerinin kesinti olmadan yan yana kullanılabileceği ve eski komut dosyalarının çalışmaya devam edeceği anlamına gelir.

  • -Hwksta_name
    İş istasyonu adıdır.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDWORKSTATION öğesini ayarlar.İş istasyonu adı sys.processes katalog görünümünün hostname sütununda listelenir ve sp_who saklı yordamı kullanılarak döndürülebilir.Bu seçenek belirtilmezse, varsayılan geçerli bilgisayar adı olur.Bu ad farklı sqlcmd oturumlarını tanımlamak için kullanılır.

  • -ddb_name
    sqlcmd öğesini başlattığınızda, USE db_name deyimini çıkarır.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDDBNAME öğesini ayarlar.Bu, ilk veritabanını belirtir.Varsayılan, oturumunuzun varsayılan veritabanı özelliğidir.Veritabanı yoksa, bir hata iletisi oluşturulur ve sqlcmd kapanır.

  • -llogintime_out
    Bir sunucuya bağlanmayı denediğinizde OLE DB sağlayıcısında açtığınız sqlcmd oturumu zaman aşımına uğramadan önce saniye sayısını belirtir.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDLOGINTIMEOUT öğesini ayarlar.sqlcmd öğesindeki oturuma ilişkin varsayılan zaman aşımı süresi sekiz saniyedir.Oturum açma zaman aşımı 0-65534 arasında bir sayı olmalıdır.Temin edilen değer sayısal değilse veya bu aralıkta değilse, sqlcmd hata iletisi oluşturur.0 değeri, zaman aşımı süresinin sonsuz olduğunu belirtir.

  • -A dedicated admin connection
    Özel Yönetici Bağlantısı (DAC) ile SQL Server öğesinde oturum açar.Bu tür bir bağlantı, sunucu sorunlarını gidermek için kullanılır.Bu, yalnızca DAC destekleyen sunucu bilgisayarlar ile çalışır.DAC kullanılabilir durumda değilse, sqlcmd hata iletisi oluşturur ve kapanır.DAC hakkında daha fazla bilgi için bkz. Adanmış yönetici bağlantısı kullanma.

  • Input/Output Options

  • -i input_file[***,***input_file2...]
    Dosyanın SQL deyimleri toplu işini veya saklı yordamları içerdiğini tanımlar.Okunacak ve işlenecek birden çok dosya sırayla belirtilebilir.Dosya adları arasında boşluk bırakmayın.sqlcmdöncelikle belirtilen dosyaların mevcut olup olmadığını kontrol eder.Bir veya daha fazla dosya yoksa, sqlcmd kapanır.-i ve -Q/-q seçenekleri birlikte kullanılamaz.

    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 fazla kez kullanılmış olabilir: -i input_file -i I input_file.

  • -ooutput_file
    sqlcmd öğesinden çıkış alan dosyayı tanımlar.

    -u belirtilirse, output_file Unicode biçiminde saklanır.Dosya adı geçersizse ve hata iletisi oluşturulduysa sqlcmd kapanır.sqlcmd aynı dosyaya ilişkin çoklu sqlcmd işlemlerinin eşzamanlı olarak yazılmasını desteklemez.Dosya çıktısı bozuk veya hatalı olur.Dosya biçimleri hakkında daha fazla bilgi için -f anahtarına bakın.Bu dosya yoksa, oluşturulur.Önceki bir sqlcmd oturuma ilişkin aynı adın dosyası üzerine yazılır.Burada belirtilen dosya stdout dosyası değildir.stdout dosyası belirtildiyse, 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.

  • -f < codepage > | i: < codepage > [ <, o: < codepage > ]
    Giriş ve çıkış kod sayfalarını belirtir.Kod sayfası numarası yüklü Windows kod sayfasını belirten sayısal bir değerdir.Daha fazla bilgi için, bkz. Kur alfabe düzeni ayarları.

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

    • Kod sayfası belirtilmediyse, sqlcmd hem giriş hem de çıkış dosyaları için geçerli kod sayfasını kullanır. Giriş dosyası Unicode dosyası olmadığı takdirde, dönüştürmeye gerek yoktur.

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

    • Çıkış dosyası belirtilmezse, çıkış kodu sayfası konsol kodu sayfası olur.Bu, konsolda doğru şekilde görüntülenecek çıktı sağlar.

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

    Cmd.exe öğesinin kod sayfasını doğrulamak için komut istemine chcp öğesini girin.

  • -u unicode output
    input_file biçimine bakmaksızın output_file öğesinin Unicode biçimde saklandığını belirtir.

  • -r[ 0 | 1] msgs to stderr
    Hata iletisi çıktısını ekrana yönlendirir (stderr).Bir parametre belirtmezseniz veya 0 değerini belirtirseniz, yalnızca 11 veya üzeri önem düzeyine sahip hata iletileri yönlendirilir.1 değerini belirtirseniz, PRINT dahil olmak üzere tüm hata iletisi çıktıları yönlendirilir.-o kullanıyorsanız bu seçeneğin etkisi olmaz.Varsayılan olarak, iletiler stdout hedefine gönderilir.

  • -R use client regional settings
    Para birimi, tarih ve saat verilerini karakter verilerine dönüştürdüğünde istemci bölgesel ayarlarını kullanmak için SQL Server OLE DB sağlayıcısını ayarlar.Varsayılan, sunucu bölgesel ayarlarıdır.

  • Sorgu Yürütme Seçenekleri

  • -q" cmdline query "
    sqlcmd başladığında sorgu yürütür ancak sorgunun çalışması tamamlandığında sqlcmd kapanmaz.Birden çok noktalı virgülle ayrılmış sorgular yürütülebilir.Sorguyu aşağıdaki örnekte gösterildiği gibi tırnak içine alın.

    Komut isteminde şunu yazın:

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

    sqlcmd -d AdventureWorks2008R2 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

    Önemli notÖnemli

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

    -b bu seçenekle birlikte belirtilirse, sqlcmd hata oluşturarak kapanır.-b bu konunun daha sonraki bölümlerinde tanımlanmaktadır.

  • **-Q"**cmdline query " and exit
    sqlcmd başlatıldığında ve sqlcmd öğesinden hemen çıktığında sorguyu yürütür.Birden çok noktalı virgülle ayrılmış sorgular yürütülebilir.

    Sorguyu aşağıdaki örnekte gösterildiği gibi tırnak içine alın.

    Komut isteminde şunu yazın:

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

    sqlcmd -d AdventureWorks2008R2 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

    Önemli notÖnemli

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

    -b bu seçenekle birlikte belirtilirse, sqlcmd hata oluşturarak kapanır.-b bu konunun daha sonraki bölümlerinde tanımlanmaktadır.

  • -e echo input
    Standart çıktı aygıtına girdi komut dosyalarını yazar (stdout).

  • -I enable Quoted Identifiers
    SET QUOTED_IDENTIFIER bağlantı seçeneğini AÇIK olarak ayarlar.Varsayılan olarak, KAPALI moduna ayarlanmıştır.Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).

  • -tquerytime_out
    Komut (veya SQL deyimi) zaman aşımına uğramadan önce, saniye sayısını belirtir.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDSTATTIMEOUT öğesini ayarlar.time_out değeri belirtilmezse, komut zaman aşımına uğramaz.querytime_out 1 ile 65535 arasında bir sayı olmalıdır.Temin edilen değer sayısal değilse veya bu aralıkta değilse, sqlcmd hata iletisi oluşturur.

    Not

    Fiili zaman aşımı süresi değeri belirtilen time_out değerinden birkaç saniye farklıdır.

  • -vvar*=value[ var=*value...]
    sqlcmd komut dosyasında kullanılabilen sqlcmd komut dosyası değişkenini oluşturur.Değer boşluk içeriyorsa, değeri tırnak içine alın.Birden çok var="values" değeri belirtebilirsiniz.Belirtilen değerlerin herhangi birinde hata varsa, sqlcmd hata iletisi oluşturur ve kapanır.

    sqlcmd -v MyVar1=something MyVar2="some thing"

    sqlcmd -v MyVar1=something -v MyVar2="some thing"

  • -x disable variable substitution
    Komut dosyası değişkenlerini yoksaymak için sqlcmd öğesine neden olur.Bu, komut dosyası $(variable_name) gibi düzenli değişkenler ile aynı biçime sahip dizeleri kapsayabilen birçok INSERT deyimi içerdiğinde yararlıdır.

  • Biçimlendirme Seçenekleri

  • -hheaders
    Sütun başlıkları arasında kaç satır yazdırılacağını belirtir.Her bir sorgu sonucu kümesi için başlıkları bir kez yazdırma seçeneği varsayılandır.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDHEADERS öğesini ayarlar.Başlıkların yazdırılmaması gerektiğini belirtmek için -1 kullanın.Geçersiz değer sqlcmd öğesinin hata iletisi oluşturmasına ve kapanmasına neden olur.

  • -scol_separator
    Sütun ayırıcı karakterini belirtir.Varsayılan değer boş bir alandır.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDCOLSEP öğesini ayarlar.Ampersand (&) veya noktalı virgül (;) gibi işletim sistemi için özel bir anlama sahip karakterleri kullanmak üzere karakteri tırnak (") içine alın.Sütun ayırıcı herhangi bir 8 bit'lik karakter olabilir.

  • -wcolumn_width
    Çıktı için ekran genişliğini belirtir.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDCOLWIDTH öğesini ayarlar.Sütun genişliğinin 8'den büyük 65536'dan küçük bir sayı olması gerekir.Belirtilen sütun genişliği bu aralık içinde değilse, sqlcmd bir hata iletisi oluşturur.Varsayılan genişlik 80 karakterdir.Çıktı satırı belirtilen sütun genişliğini aştığında, satır bir sonraki satırı da kapsar.

  • -W remove trailing spaces
    Bu seçenek bir sütundan ardışık boşlukları kaldırır.Başka bir uygulamaya verilecek verileri hazırlarken -s seçeneğini bu seçenekle birlikte kullanın.-y veya -Y seçenekleriyle kullanılamaz.

  • -k[ 1 | 2 ] remove[replace] control characters
    Çıktıdan sekmeler ve yeni satır karakterleri gibi tüm denetim karakterlerini kaldırır.Bu, veri döndürüldüğünde sütun biçimlendirmesini korur.1 belirtilirse, denetim karakterleri tek bir boşluk ile değiştirilir.2 belirtilirse, ardışık denetim karakterleri tek bir boşluk ile değiştirilir.

  • -ydisplay_width
    sqlcmd komut dosyası değişkeni SQLCMDMAXFIXEDTYPEWIDTH öğesini ayarlar.Yüksek değişken uzunluğu veri türleri için döndürülen karakter sayısını sınırlar:

    • varchar(max)

    • nvarchar(max)

    • varbinary(max)

    • xml

    • UDT (user-defined data types)

    • text

    • ntext

    • image

    Not

    UDT'ler uygulamaya bağlı olarak sabit uzunluğa sahip olabilir.Sabit uzunluğa sahip söz konusu UDT uzunluğu display_width değerinden azsa, döndürülen UDT değeri etkilenmez.Ancak uzunluk display_width değerinden yüksekse, çıktı kesilir.

    display_width değeri 0 ise, çıktı 1 MB olacak şekilde kesilir.:XML ON komutunu çıktının kesilmesini önlemek için kullanabilirsiniz.:XML ON komutu bu konunun ilerleyen bölümlerinde açıklanmaktadır.

    Önemli notÖnemli

    Döndürülen veri boyutuna bağlı olarak hem sunucu hem de ağ üzerinde ciddi performans sorunlarına neden olabileceğinden -y 0 seçeneği son derece dikkatli bir şekilde kullanın.

  • -Ydisplay_width
    sqlcmd komut dosyası değişkeni SQLCMDMAXVARTYPEWIDTH öğesini ayarlar.Varsayılan 256'dır.Aşağıdaki veri türleri için döndürülen karakter sayısını sınırlar:

    • char

    • nchar

    • varchar(n), burada 1<n<8000

    • nvarchar(n) burada 1<n<4000

    • sql_variant

  • Hata Raporlama Seçenekleri

  • -b on error batch abort
    Hata oluştuğunda sqlcmd öğesinin kapandığını ve DOS ERRORLEVEL değeri döndürdüğünü belirtir.SQL Server hata iletisi 10'dan büyük bir önem düzeyine sahip olduğunda DOS ERRORLEVEL değişkeni için döndürülen değer 1 değeridir. Aksi halde döndürülen değer 0 olur.-b seçeneklerinin yanı sıra -V seçeneği ayarlandı. sqlcmd, önem düzeyi -V kullanan değer kümesinden daha düşükse hata bildirmez.Komut istemi toplu iş dosyaları ERRORLEVEL değerini test edebilir ve hatayı uygun şekilde işleyebilir.sqlcmd, önem derecesi 10 için hata bildirmez (bilgi iletileri).

    sqlcmd komut dosyası doğru olmayan bir açıklama, sözdizimi hatası içeriyorsa veya komut dosyası değişkeni eksikse; döndürülen ERRORLEVEL öğesi 1 olur.

  • -V severitylevel
    ERRORLEVEL değişkenini ayarlamak için kullanılan önem derecesini kontrol eder.Bu değer kümesi ERRORLEVEL öğesinden küçük veya ona eşdeğer önem düzeyine sahip hata iletileri.0'dan az olan değerler 0 olarak raporlanır.Toplu iş ve CMD dosyaları ERRORLEVEL değişkeninin değerini test etmek için kullanılabilir.

  • -merror_level
    Hangi hata iletilerinin stdout konumuna gönderildiğini kontrol eder.Bu düzeyden küçük veya ona eşdeğer önem düzeyine sahip iletiler gönderilir.Bu değer -1 olarak ayarlandığında, bilgi iletilerini içeren tüm iletiler gönderilir.-m ve -1 öğeleri arasında boşluğa izin verilmez.Örneğin, -m-1 geçerlidir ancak -m-1 geçersizdir.

    Bu seçenek ayrıca sqlcmd komut dosyası değişkeni SQLCMDERRORLEVEL öğesini de ayarlar.Bu değişkenin varsayılanı 0'dır.

  • Çeşitli Seçenekler

  • -apacket_size
    Farklı boyutta bir paket talep eder.Bu seçenek sqlcmd komut dosyası değişkeni SQLCMDPACKETSIZE öğesini ayarlar.packet_size, 512 ve 32767 arasında bir değer olmalıdır.Varsayılan = 4096Daha büyük bir paket boyutu GO komutları arasında birçok SQL ifadesine sahip komut dosyası yürütmeleri için performansı geliştirebilir.Daha büyük bir paket boyutu talep edebilirsiniz.Ancak talep reddedilirse, sqlcmd paket boyutu için sunucu varsayılanını kullanır.

  • -ccmd_end
    Toplu iş sonlandırıcısını belirtir.Varsayılan olarak, komutlar sonlandırılır ve bir satıra tek başına "GO" sözcüğü yazılarak SQL Server hedefine gönderilir.Toplu iş sonlandırıcısını sıfırladığınızda, önlerinde ters eğik çizgi olsa da işletim sistemi için özel bir anlama sahip ayrılmış Transact-SQL anahtar sözcükleri veya karakterleri kullanmayın.

  • -L [ c ] list servers[clean output]
    Yerel olarak yapılandırılmış sunucu bilgisayarlarını ve ağda yayınlanan sunucu bilgisayarların adlarını listeler.Bu parametre, diğer parametreler ile birlikte kullanılamaz.Listelenebilen maksimum sunucu bilgisayarlar sayısı 3000'dir.Arabellek boyutu nedeniyle sunucu listesi kesilirse, uyarı iletisi görüntülenir.

    Not

    Ağlardaki yayın yapısı nedeniyle sqlcmd tüm sunuculardan zamanında yanıt alamayabilir.Bu nedenle, döndürülen sunucular listesi bu seçeneğin her çağrılmasında farklı olabilir.

    İsteğe bağlı c parametresi belirtilirse, çıktı Sunucular olmadan görüntülenir: Başlık satırı ve her bir sunucu satırı baştaki boşluk olmadan listelenir.Bu temiz çıktı olarak adlandırılır.Temiz çıktı, komut dosyası dillerinin işleme performansını artırır.

  • -p[ 1 ] print statistics[colon format]
    Her sonuç kümesi için performans istatistiklerini yazdırır.Aşağıdaki performans istatistikleri için biçim örneğidir:

    Network packet size (bytes): n

    x xact[s]:

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

    Konum:

    x = SQL Server tarafından işlenen işlem sayısı.

    t1 = Tüm işlemlere ilişkin toplam süre.

    t2 = Tek bir işleme ilişkin ortalama süre.

    t3 = Saniye başına ortalama işlem sayısı.

    Tüm süreler milisaniye cinsindendir.

    İsteğe bağlı 1 parametresi belirtildiyse, istatistik çıktı biçimi kolaylıkla elektronik tabloya alınabilen veya bir komut dosyası ile işlenebilen iki nokta üst üste işareti ile ayrılmış biçimdedir.

    İsteğe bağlı parametre, 1 dışında bir değerse hata oluşturulur ve sqlcmd kapanır.

  • -X [ 1 ] disable commands, startup script, enviroment variables [and exit]
    sqlcmd, toplu iş dosyasından yürütüldüğünde sistem güvenliğinizi aşmaya çalışabilecek komutları devre dışı bırakır.Devre dışı bırakılan komutlar tanınmaya devam eder; sqlcmd uyarı iletisi verir ve çalışmaya devam eder.İsteğe bağlı 1 parametresi belirtilirse, sqlcmd hata iletisi oluşturur ve ardından kapanır.Aşağıdaki komutlar, -X seçeneği kullanıldığında devre dışı bırakılır:

    • ED

    • **!!**command

    -X seçeneği belirtilirse, seçenek ortam değişkenlerinin sqlcmd öğesine geçmesini engeller.SQLCMDINI komut dosyası değişkenini kullanarak belirtilen başlangıç komut dosyasının yürütülmesini önler.sqlcmd komut dosyası değişkenleri hakkında daha fazla bilgi için bkz.: SQLCMD Scripting değişkenleri ile kullanma.

  • -? show syntax summary
    sqlcmd seçeneklerinin sözdizimi özetini görüntüler.

Açıklamalar

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

Birden çok sonuç döndürülürse sqlcmd, bir toplu işteki her bir sonuç kümesi arasında bir boşluk satırı yazdırır.Ayrıca yürütülen deyime uygulanmadığında "<x> satırları etkilendi" iletisi görüntülenmez.

sqlcmd öğesini etkileşimli olarak kullanmak için komut isteminde bu konunun daha önceki bölümlerinde tanımlanan bir veya daha fazla seçenek ile birlikte sqlcmd yazın.Daha fazla bilgi için bkz.: Sqlcmd yardımcı programını kullanma.

Not

-L, -Q, -Z veya -i seçenekleri sqlcmd öğesinin yürütme işleminden sonra kapanmasına neden olur.

Tüm bağımsız değişkenler ve genişletilmiş değişkenler dahil olmak üzere komut ortamındaki (Cmd.exe) sqlcmd komut satırının toplam uzunluğu Cmd.exe için işletim sistemi tarafından belirlenen uzunluktur.

Değişken Öncelliği (Düşükten Yükseğe)

  1. Sistem düzeyi ortam değişkenleri.

  2. Kullanıcı düzeyi ortam değişkenleri

  3. Komut kabuğu (SET X=Y) sqlcmd öğesi çalıştırılmadan önce komut isteminde ayarlandı.

  4. sqlcmd-v X=Y

  5. :Setvar X Y

Not

Ortam değişkenlerini görüntülemek için Denetim Masası'nda Sistem'i açın ve ardından Gelişmiş sekmesini tıklatın.

sqlcmd Komut Dosyası Değişkenleri

Değişken

İlgili anahtar

R/W

Default

SQLCMDUSER

-U

R

""

SQLCMDPASSWORD

-P

--

""

SQLCMDSERVER

-S

R

"DefaultLocalInstance"

SQLCMDWORKSTATION

-H

R

"ComputerName"

SQLCMDDBNAME

-d

R

""

SQLCMDLOGINTIMEOUT

-l

R/W

"8" (saniye)

SQLCMDSTATTIMEOUT

-t

R/W

"0" = süresiz olarak bekleme

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

""

SQLCMDUSER, SQLCMDPASSWORD ve SQLCMDSERVER :Connect kullanıldığında

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ştirebileceğini gösterir. Sonraki komutlar yeni değerden etkilenir.

sqlcmd komutları

sqlcmd içindeki Transact-SQL deyimlere ek olarak aşağıdaki komutlar da kullanılabilir:

GO [count]

:List

[:] RESET

:Error

[:] ED

:Out

[:] !!

:Perftrace

[:] QUIT

:Connect

[:] EXIT

:On Error

:r

:Help

:ServerList

:XML [ON | OFF]

:Setvar

:Listvar

sqlcmd komutlarını kullandığınızda aşağıdakileri aklınızda bulundurun:

  • GO dışındaki tüm sqlcmd komutlarının önünde iki nokta üst üste işareti (:) olmalıdır.

    Önemli notÖnemli

    Varolan osql komut dosyaları ile geriye dönük uyumluluğu sürdürmek için komutlardan bazıları iki nokta üst üste işareti olmadan tanınır.Bu, [:] ile gösterilir.

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

  • Tüm sqlcmd komutları büyük/küçük harf duyarsızdır.

  • Her bir komut ayrı bir satırda olmalıdır.Komut Transact-SQL deyimi veya başka bir komut tarafından takip edilemez.

  • Komutlar hemen yürütülür.Komutlar yürütme arabelleğine koyulmazken, Transact-SQL deyimleri koyulur.

  • Düzenleme Komutları

  • [:] ED
    Metin düzenleyicisini başlatır.Bu düzenleyici geçerli Transact-SQL toplu işini veya en sonra yürütülen toplu işi düzenlemek için kullanılabilir.Son yürütülen toplu işi düzenlemek için ED komutu son toplu iş yürütüldükten hemen sonra yazılmalıdır.

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

    SET SQLCMDEDITOR=notepad

  • [:] RESET
    Deyim önbelleğini temizler.

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

  • Değişkenler

  • :Setvar <var> [ "value" ]
    sqlcmd komut dosyası değişkenlerini tanımlar.Komut dosyası değişkenleri şu biçime sahiptir: $(VARNAME).

    Değişken adları büyük/küçük harf duyarsızdır.

    Komut dosyası değişkenleri aşağıdaki şekillerde ayarlanabilir:

    • Bir komut satırı seçeneğini örtülü şekilde kullanarak.Örneğin -l seçeneği SQLCMDLOGINTIMEOUT sqlcmd değişkenini ayarlar.

    • :Setvar komutunu kullanarak açık şekilde.

    • sqlcmd öğesini çalıştırmadan önce ortam değişkenini tanımlayarak.

    Not

    -X seçeneği ortam değişkenlerinin sqlcmd öğesine geçmesini engeller.

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

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

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

    Komut dosyası değişkeninin dize değeri boşluk içeriyorsa, değeri tırnak içine alın.Komut dosyası değişkenine ilişkin bir değer belirtilmediyse, komut dosyası değişkeni atılır.

  • :Listvar
    O anda ayarlanan komut dosyası değişkenlerinin bir listesini görüntüler.

    Not

    Yalnızca sqlcmd ile ayarlanan komut dosyası değişkenleri ve :Setvar komutu kullanılarak ayarlanan komut dosyası değişkenleri görüntülenir.

  • Çıkış Komutları

  • :Error **<filename>|STDERR|STDOUT
    Tüm hata çıkışlarını file name tarafından belirlenen dosyaya, stderr ve stdout öğesine yönlendirir.Error komutu bir komut dosyasında birden fazla kez görünebilir.Varsayılan olarak hata çıkışı stderr öğesine gönderilir.

    • file name
      Çıkışı alacak dosyayı oluşturur ve açar.Dosya zaten mevcutsa, sıfır bayt olacak şekilde kesilir.Dosya izinler veya diğer nedenlerden dolayı kullanılamıyorsa, çıktı değiştirilmez ve en son belirtilen ya da varsayılan hedefe gönderilir.

    • STDERR
      Hata çıktısını stderr akışına geçirir.Akış yönlendirilirse, akışın yönlendirildiği hedef hata çıktısı alır.

    • STDOUT
      Hata çıktısını stdout akışına geçirir.Akış yönlendirilirse, akışın yönlendirildiği hedef hata çıktısı alır.

  • :Out <filename>| STDERR| STDOUT
    file name tarafından belirtilen dosyaya ilişkin tüm sorgu sonuçlarını oluşturur ve stderr ya da stdout öğelerine yönlendirir.Varsayılan olarak çıkış stdout öğesine gönderilir.Dosya zaten mevcutsa, sıfır bayt olacak şekilde kesilir.Out komutu bir komut dosyasında birden fazla kez görünebilir.

  • :Perftrace <filename>| STDERR| STDOUT
    file name tarafından belirtilen dosyaya ilişkin tüm performans takip bilgilerini oluşturur ve stderr ya da stdout öğelerine yönlendirir.Varsayılan olarak performans takip çıktısı stdout öğesine gönderilir.Dosya zaten mevcutsa, sıfır bayt olacak şekilde kesilir.Perftrace komutu bir komut dosyasında birden fazla kez görünebilir.

  • Yürütme Denetimi Komutları

  • :On Error[ exit | ignore]
    Komut dosyası veya toplu iş yürütme işlemi sırasında hata oluşursa, gerçekleştirilecek işlemi ayarlar.

    exitseçeneği kullanıldığında, sqlcmd uygun hata değeri ile kapanır.

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

  • [:] QUIT
    sqlcmd öğesinin kapanmasına neden olur.

  • [:] EXIT[ (statement) ]
    sqlcmd öğesine ilişkin dönüş değeri olarak bir SELECT deyimi sonucu kullanmanızı sağlar.Sayısal bir değerse, son sonuç satırının ilk sütunu 4 baytlık bir tamsayıya (uzun) dönüştürülür.MS-DOS, düşük baytı üst işlem veya işletim sistemi hata düzeyine iletir.Windows 200x 4 baytlık tamsayının tamamını iletir.Sözdizimi:

    :EXIT(query)

    Örneğin:

    :EXIT(SELECT @@ROWCOUNT)

    Ayrıca EXIT parametresini toplu işlem dosyasının bir parçası olarak dahil edebilirsiniz.Örneğin, komut istemine şunu yazın:

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

    sqlcmd yardımcı programı parantez () içindeki her şeyi sunucuya gönderir.Sistem saklı yordamı bir küme seçip değer döndürürse, yalnızca seçim döndürülür.Parantez içinde bir şey olmayan EXIT**()** deyimi toplu işlemde kendinden önceki her şeyi yürütür ve ardından dönüş değeri olmadan kapanır.

    Hatalı bir sorgu belirtildiğinde, sqlcmd dönüş değeri olamadan kapanır.

    EXIT biçimlerinin listesi:

    • :EXIT

    Toplu işi yürütmez, hemen kapanır ve değer döndürmez.

    • :EXIT( )

    Toplu işi yürütür ardından kapanır ve değer döndürmez.

    • :EXIT(query)

    Sorgu içeren toplu işi yürütür ve ardından sorgu sonuçlarını döndürdükten sonra kapanır.

    RAISERROR, sqlcmd komut dosyası içinde kullanılıyorsa ve 127 durumu ortaya çıkar. sqlcmd kapanır ve istemciye ileti kimliğini geri döndürür.Örneğin:

    RAISERROR(50001, 10, 127)

    Bu hata sqlcmd komut dosyasının sonlandırılmasına ve istemciye 50001 ileti kimliği döndürmesine neden olur.

    -1 to -99 dönüş değerleri SQL Server tarafından ayrılır; sqlcmd aşağıdaki ek dönüş değerlerini tanımlar:

    Dönüş Değerleri

    Açıklama

    -100

    Dönüş değeri seçmeden önce hatayla karşılaşıldı.

    -101

    Dönüş değeri seçerken satır bulunamadı.

    -102

    Dönüş değeri seçerken dönüştürme hatası oluştu.

  • GO [count]
    GO hem bir toplu işin sonunu hem de önbelleğe alınan Transact-SQL deyimlerinin yürütüldüğünü gösterir.count için bir değer belirttiğinizde, önbelleğe alınan deyim tek bir toplu iş olarak count kez yürütülür.

  • Çeşitli Komutlar

  • :r <filename>
    Ek Transact-SQL ifadelerini ve sqlcmd komutlarını deyim önbelleğinde <filename>* *tarafından belirtilen dosyadan ayrıştırır.

    Dosya Transact-SQL GO öğesinin takip etmediği deyimleri içeriyorsa, :r öğesini takip eden satıra GO girmeniz gerekir.

    Not

    <filename> öğesi sqlcmd öğesinin çalıştırıldığı başlangıç dizinine göre okunur.

    Toplu iş sonlandırıcıyla karşılaşıldıktan sonra dosya okunur ve yürütülür.Birden çok :r komutu çıkarabilirsiniz.Dosya herhangi bir sqlcmd komutunu içerebilir.Bu, GO toplu iş sonlandırıcısını içerebilir.

    Not

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

  • :Serverlist
    Yerel olarak yapılandırılmış sunucuları ve ağda yayınlanan sunucu adlarını listeler.

  • :Connect server_name[**\**instance_name] [-l timeout] [-U user_name [-P password]]
    SQL Server örneğine bağlanır.Ayrıca geçerli bağlantıyı kapatır.

    Zaman aşımı seçenekleri:

    0

    devamlı olarak bekleme

    n>0

    n saniye bekleme

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

    timeout belirtilmezse, SQLCMDLOGINTIMEOUT değişkeninin değeri varsayılandır.

    Yalnızca user_namebelirtildiği takdirde (seçenek veya ortam değişkeni olarak), kullanıcının parola girmesi istenir.Bu, SQLCMDUSER veya SQLCMDPASSWORD ortam değişkenleri ayarlanmışsa doğru değildir.Seçenekler veya ortam değişkenleri sağlanmazsa, Windows Kimlik Doğrulaması modu oturum açmak için kullanılır.Örneğin, tümleşik güvenlik kullanarak SQL Server, myserver öğesinin instance1 örneğine bağlanmak için aşağıdakileri kullanırsınız:

    :connect myserver\instance1

    Komut dosyası değişkenlerini kullanarak varsayılan myserver örneğine bağlanmak için aşağıdakileri kullanırsınız:

    :setvar myusername test

    :setvar myservername myserver

    :connect $(myservername) $(myusername)

  • [:] !!< command>
    İşletim sistemi komutlarını yürütür.İşletim sistemi komutu yürütmek için işletim sistemi komutunun önünde iki ünlem işareti (!!) bulunan bir satır başlatın.Örneğin:

    :!! Dir

    Not

    Komut sqlcmd öğesinin çalıştırıldığı bilgisayarda yürütülür.

  • :XML [ON | OFF]
    Daha fazla bilgi için, bu konunun sonraki bölümlerindeki "XML Çıktı Biçimi" konusuna bakın

  • :Help
    sqlcmd komutlarını her bir komuta ilişkin kısa açıklama ile birlikte listeler.

sqlcmd Dosya Adları

sqlcmd giriş dosyaları -i seçeneği veya :r komutu ile birlikte belirtilebilir.Çıktı dosyaları -o seçeneği ya da :Error, :Out ve :Perftrace komutları ile belirtilebilir.Bu dosyalarla çalışmaya ilişkin yönergeler:

  • :Error, :Out ve :Perftrace ayrı <filename> öğeleri kullanmalıdır.Aynı <filename> öğesi kullanılırsa, komutlara ilişkin girişler birbirleriyle karıştırılabilir.

  • Uzak sunucuda bulunan giriş dosyası yerel bir bilgisayardaki sqlcmd öğesinden çağrılır ve dosya :out c:\OutputFile.txt. gibi bir sürücü dosya yolu içerir.Çıktı dosyası, uzak sunucuda değil yerel bilgisayarda oluşturulur.

  • Geçerli dosya yolu şunları içerir: C:\<filename>,\\<Server>\<Share$>\<filename> ve "C:\Some Folder\<file name>".Yolda bir boşluk varsa, tırnak işaretleri kullanın.

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

Bilgi İletileri

sqlcmd, sunucu tarafından gönderilen bilgi iletisini yazdırır.Aşağıdaki örnekte Transact-SQL deyimi yürütüldükten sonra bilgi iletisi yazdırılır.

Komut istemine şunu yazın:

sqlcmd

At the sqlcmd prompt type:

USE AdventureWorks2008R2;

GO

ENTER tuşuna bastığınızda, şu bilgi iletisi yazdırılır: "Veritabanı içeriği 'AdventureWorks2008R2' olarak değiştirildi".

Transact-SQL Sorgularına ilişkin Çıktı Biçimi

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

Bu çizginin ardından tire karakterlerinin bir kümesi olan ayırıcı satırı gelir.Aşağıdaki çıktıda bir örnek gösterilmektedir.

Şunu başlatın: sqlcmd.sqlcmd komut istemine şunu yazın:

USE AdventureWorks2008R2;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

ENTER tuşuna bastığı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)

BusinessEntityID sütunu 4 karakter genişliğinde olsa da daha uzun bir sütun adını içerebilmesi için genişletildi.Varsayılan olarak, çıktı 80 karakterde sonlandırılır.Bu, -w seçeneği kullanılarak veya SQLCMDCOLWIDTH komut dosyası değişkeni ayarlanarak değiştirilebilir.

XML Çıktı Biçimi

FOR XML yan tümcesinin sonucu olan XML çıkıştır, biçimlendirilmemiştir ve devamlı akıştadır.

XML çıkışı elde etmek için şu komutu kullanın: :XML ON.

Not

sqlcmd normal biçimde hata iletisi döndürür.Hata iletilerinin XML biçiminde XML metin akışındaki çıkış olacağını aklınızda bulundurun.:XML ON, sqlcmd kullanıldığında bilgi iletileri görüntülenmez.

XML modunu kapatmak için şu komutu kullanın: :XML OFF.

XML OFF komutu sqlcmd öğesini satır odaklı çıkışa geçirdiğinden GO komutu XML OFF komutu çıkarılmadan önce görünmemelidir.

XML (akışa alınan) verileri ve satır kümesi verileri karıştırılamaz.XML ON komutu XML akışlarının kaynağı olan Transact-SQL deyimi yürütülmeden önce verilmediyse, çıkış bozuk olur.XML ON komutu verilmişse, düzenli satır kümelerinin kaynağı olan Transact-SQL deyimlerini yürütemezsiniz.

Not

:XML komutu SET STATISTICS XML deyimini desteklemez.

sqlcmd En İyi Yöntemleri

Güvenlik ve etkinliği en yüksek seviyeye çıkarmak için aşağıdaki yöntemleri kullanın.

  • Tümleşik güvenlik kullanın.

  • Otomatik ortamlarda -X öğesini kullanın.

  • Uygun NTFS dosya sistemi izinlerini kullanarak girdi ve çıktı dosyalarının güvenliğini sağlayın.

  • Performansı artırmak için oturum kümesi yerine tek bir sqlcmd oturumda gerçekleştirebileceğiniz kadar gerçekleştirin.

  • Toplu iş veya sorgu yürütme için zaman aşımını toplu işi veya sorguyu yürütmek için gerekli olacağını düşündüğünüz zamandan daha yüksek bir değere ayarlayın.