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ı 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-
[:]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ğıdakilere dikkat edin:
dışındaki tüm
GOkomutları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,
-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 çı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ı
stderrakışına yönlendirir. Çıkış yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.STDOUT
Hata çıkışını
stdoutakışı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:
:EXITToplu 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:Perftraceayrı 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