Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
sqlcmd yardımcı programı Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını kabul eder.
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.
sqlcmd içindeki Transact-SQL deyimlerine ek olarak aşağıdaki komutları kullanın:
GO [ <count> ]:List[:]RESET:Error-
[:]ED1 :Out[:]!!:Perftrace[:]QUIT:Connect[:]EXIT:On Error:r:Help-
:ServerList1 -
:XML [ ON | OFF ]1 :Setvar:Listvar
1 Linux veya macOS'ta desteklenmez.
sqlcmd komutlarını kullanırken aşağıdaki noktaları göz önünde bulundurun:
sqlcmd komutları,
GOhariç, iki nokta üst üste (:) ile başlamalıdır.Important
Mevcut osql betikleri ile geriye dönük uyumluluğu korumak için bazı komutlar iki nokta üst üste olmadan çalışır (bu durum
[:]olarak belirtilir).sqlcmd komutları yalnızca satırın başında göründüklerinde tanır.
Tüm sqlcmd komutları büyük/küçük harfe duyarlı değildir.
Her komut ayrı bir satırda olmalıdır. Bir komuttan sonra başka bir komut veya Transact-SQL ifadesi kullanamazsınız.
Komutlar hemen çalışır. Onlar, Transact-SQL deyimleri gibi yürütme arabelleğine yerleştirilmezler.
Komutları düzenleme
[:]ED
Metin düzenleyicisini başlatır. Geçerli Transact-SQL toplu işlemini veya son çalıştırma toplu işlemini düzenlemek için bu düzenleyiciyi kullanın. Son yürütme toplu işlemini düzenlemek için, son toplu işlem yürütmeyi tamamladıktan hemen sonra ED komutunu yazın.
Ortam SQLCMDEDITOR değişkeni metin düzenleyicisini tanımlar. 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 aşağıdaki komutu 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,
-lseçeneğiSQLCMDLOGINTIMEOUTsqlcmd değişkenini ayarlar. - açıkça
:Setvarkomutunu 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 çıkışını dosya adıyla belirtilen dosyaya, stderr, veya stdout öğesine yeniden yönlendirin.
:Error komutu betikte birden çok kez görünebilir. Varsayılan olarak, hata çıktısı stderr öğesine gider.
filename
Çıktıyı alan bir dosya oluşturur ve açar. Var olan bir dosya sıfır bayt olarak kesilir. Dosya izinler veya başka nedenlerle mevcut değilse, çıkış değiştirilmez ve hata çıkışı, son belirtilen veya varsayılan hedefe gönderilir.
STDERR
Hata çıkışını
stderrakışına yönlendirir. Çıkış yeniden yönlendirilirse, akışın yönlendirildiği hedef hata çıkışını alır.STDOUT
Hata çıkışını
stdoutakışına yönlendirir. Çıkış yeniden yönlendirilirse, akışın yönlendirildiği hedef hata çıkışını alır.
:Out <dosya adı> | STDERR | STDOUT
Tüm sorgu sonuçlarını oluşturur ve dosya adıyla belirtilen dosyaya, stderr veya stdout yönlendirir. Varsayılan olarak, çıktı stdout öğesine gider. 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, filename adıyla belirtilen dosyaya, stderrdiğerine, veya stdoutyeniden yönlendirir ve oluşturur. Varsayılan olarak, performans izleme çıkışı adresine stdoutgider. Var olan bir dosya sıfır bayt olarak kesilir.
:Perftrace komutu betikte birden çok kez görünebilir.
Yürütme denetimi komutları
:Hata Durumunda [ çıkış | yoksay ]
Bir hata oluştuğunda betik veya toplu yürütme sırasında gerçekleştirilecek eylemi ayarlar.
seçeneğini kullandığınızda exit, sqlcmd uygun hata değeriyle çıkar.
Bu seçeneği ignore kullandığınızda, sqlcmd hatayı yoksayar ve toplu komut dosyası veya betiği yürütmeye devam eder. Varsayılan olarak , sqlcmd bir hata iletisi yazdırır.
[:]QUIT
sqlcmd çıkmasına neden olur.
[:]EXIT [ ( ifade ) ]
SELECT deyiminin sonucunu sqlcmd'in dönüş değeri olarak kullanın. 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ümler 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.
:EXIT() Parantezler arasında hiçbir şey olmayan ifade, toplu işlem dosyasında öncesindeki her şeyi çalıştırır ve ardından dönüş değeri olmadan çıkar.
Yanlış bir sorgu belirttiğinizde sqlcmd, dönüş değeri olmadan çıkış yapar.
EXIT biçimlerinin listesi aşağıdadır:
:EXITToplu işlemi çalıştırmaz, hemen çıkar ve hiç değer döndürmez.
:EXIT( )Toplu işlemi çalıştırır, sonra çıkış yapar ve herhangi bir değer döndürmez.
:EXIT(query)Sorguyu içeren toplu işlemi çalıştırır ve sorgunun sonuçlarını döndürdükten sonra sonlandırır.
RAISERROR etiketini bir sqlcmd betiği içinde kullanır ve 127 durumunu yükseltirseniz, sqlcmd çıkar ve ileti kimliğini istemciye geri döndürür. Örneğin:
RAISERROR(50001, 10, 127)
Bu hata, sqlcmd betiğinin sona erip istemciye 50001 ileti kimliğini döndürmesine neden olur.
dönüş değerleri -1-99 SQL Server tarafından ayrılmıştır ve sqlcmd ek dönüş değerleri 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. Toplu işleme, ayrı işlemler olarak birden çok kez çalıştırılır. Tek bir toplu işte birden fazla değişken bildiremezsiniz.
Çeşitli komutlar
:r <dosya adı>
Dosya adı tarafından belirtilen dosyadan ek Transact-SQL deyimlerini ve sqlcmd komutlarını deyim önbelleğine ayrıştırır. sqlcmd , başlangıç dizinine göre dosya adını okur.
Dosyada GOtarafından takip edilmeen Transact-SQL deyimleri varsa, GOizleyen satıra :r girmeniz gerekir.
sqlcmd , bir toplu iş sonlandırıcısı ile karşılaştıktan sonra dosyayı okur ve çalıştırı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 artar.
: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 user_name [-P parola]] [-N[s|m|o]] [-F hostname_in_certificate]
SQL Server örneğine bağlanır. Ayrıca geçerli bağlantıyı kapatır.
Important
Komut :Connect örtük bir toplu iş ayırıcısı olarak çalışmaz. Geçerli toplu işte arabelleğe alınan Transact-SQL deyimleri GO komutu verilene kadar çalıştırılmaz. Eğer araya GO deyimleri koymadan birden fazla :Connect komut kullanırsanız, arabelleğe alınan tüm deyimler her bir sunucuda ayrı ayrı çalışmaz, sadece son bağlı sunucuda çalışır.
Şifreleme seçenekleri (
-N[s|m|o]):Şifreli bağlantı istemek için bu seçeneği kullanın. Eğer siz
-Neklemezseniz,-Nm(mandatoryiçin) varsayılandır. Bu seçenek, SQL Server 2022 (16.x) ve önceki sürümlerde uyumsuzluk yaratan bir değişikliktir; bu durumda-No(optionaliçin varsayılan olarak) kullanılırdı.Value Description -NsSıkı -Nm(varsayılan)Mandatory -NoOpsiyonel Sertifikada ana bilgisayar adı (
-F hostname_in_certificate)Sunucu sertifikası doğrulaması sırasında kullanılacak farklı, beklenen Ortak Ad (CN) veya Konu Diğer Adı (SAN) belirtir. Bu seçenek olmadan, sertifika doğrulaması sertifikadaki CN veya SAN'ın bağlandığınız sunucu adıyla eşleşmesini sağlar. Bu parametre, örneğin DNS diğer adları kullanılırken sunucu adı CN veya SAN ile eşleşmediğinde doldurulabilir.
Zaman aşımı seçenekleri:
Value Behavior 0Sonsuza kadar bekle n>0n saniye bekleyin SQLCMDSERVERbetik değişkeni geçerli etkin bağlantıyı yansıtır.zaman aşımı belirtilmezse,
SQLCMDLOGINTIMEOUTdeğişkeninin değeri varsayılan değerdir.
Yalnızca user_name (seçenek veya ortam değişkeni olarak) belirtirseniz , sqlcmd sizden parola girmenizi ister.
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
Komut dosyası değişkenlerini kullanmanın varsayılan örneğine myserver bağlanmak için aşağıdaki ayarları kullanın:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:]!! command
İşletim sistemi komutlarını çalıştırır. bir işletim sistemi komutu çalıştırmak 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'nin çalıştığı bilgisayarda çalışı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 açıklamasını listeler.
sqlcmd dosya adları
seçeneğini veya komutunu kullanarak -i:r giriş dosyalarını belirtin. seçeneğini veya -o, :Errorve :Out komutlarını kullanarak :Perftrace çıkış dosyalarını belirtin. Bu dosyalarla çalışırken aşağıdaki yönergeleri kullanın:
dosya adı değerlerini
:Error,:Outve:Perftraceiçin ayrı kullanın. Eğer aynı dosya adını kullanırsanız, komutlar girişleri karıştırabilir.Yerel bir bilgisayardaki sqlcmd'den uzak sunucuda bulunan bir giriş dosyasını çağırırsanız ve dosya gibi
:Out c:\OutputFile.txtbir sürücü dosyası yolu içeriyorsa , sqlcmd çıkış dosyasını uzak sunucuda değil yerel bilgisayarda oluşturur.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 , sunucunun gönderdiği herhangi bir bilgilendirme iletisini yazdırır. Aşağıdaki örnekte , sqlcmd Transact-SQL deyimlerini çalıştırdıktan sonra bilgilendiren bir ileti yazdırır.
sqlcmd'i başlatın. sqlcmd komut istemine sorguyu yazın:
USE AdventureWorks2025;
GO
Enter tuşuna bastığınızda, sqlcmd aşağıdaki bilgilendirme iletisini yazdırır:
Changed database context to 'AdventureWorks2025'.
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 sqlcmd, çıktıyı bir sonraki sütuna kadar boşluklarla doldurur.
sqlcmd tire karakterlerinden oluşan bir ayırıcı çizgi yazdırır. Aşağıdaki çıktıda bir örnek gösterilmektedir.
sqlcmd'i başlatın. sqlcmd komut istemine sorguyu yazın:
USE AdventureWorks2025;
SELECT TOP (2) BusinessEntityID,
FirstName,
LastName
FROM Person.Person;
GO
Enter tuşuna bastığınızda sqlcmd aşağıdaki sonuç kümesini döndürü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 , sqlcmd çıktıyı 80 karakterde sonlandırır. seçeneğini kullanarak veya betik değişkenini -w ayarlayarak SQLCMDCOLWIDTH bu genişliği değiştirebilirsiniz.
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 akışlarını :XML ON veren bir Transact-SQL deyimi çalıştırılmadan önce komut verilmediyse, çıkış bozuk olur.
:XML ON Komut verildikten sonra, normal satır kümelerinin çıktısını veren Transact-SQL deyimlerini çalıştıramazsınız.
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ğrulaması 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