Aracılığıyla paylaş


sqlcmd yardımcı programındaki komutlar

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

sqlcmd yardımcı programı Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını girmenizi sağlar.

Note

Sisteminizde hangi sqlcmd değişkeninin ve sürümünün yüklü olduğunu öğrenmek için bkz. Sqlcmd yardımcı programının yüklü sürümünü denetleme. sqlcmd'yi alma hakkında bilgi için bkz. sqlcmd yardımcı programını indirme ve yükleme.

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.

    Important

    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

[:]RESET

Komut önbelleğini temizler.

:List

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

Variables

:Setvar <var> [ "değer" ]

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

Note

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

Note

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.

  • filename

    Çı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. Çıkış yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.

  • STDOUT

    Hata çıkışını stdout akışına yönlendirir. Çıkış 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.

[:]QUIT

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)'dir.

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

GO [sayı]

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.

Note

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.

:ServerList

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:

Value Behavior
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)

[:]!! command

İş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

Note

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.

:Help

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.

sqlcmd'i baş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 sütun ayırıcısı 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.

sqlcmd'i baş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.

Note

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.

Note

: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 doğrulamasını kullanın

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