Aracılığıyla paylaş


Sorgu Düzenleyicisi ile SQLCMD betiklerini düzenleme

SORGULARı SQLCMD betikleri olarak yazmak ve düzenlemek için SQL Server Management Studio'daki (SSMS) sorgu düzenleyicisini kullanın. Windows sistem komutlarını ve Transact-SQL deyimlerini aynı betikte işlemek için SQLCMD betiklerini kullanabilirsiniz.

SQLCMD modunu etkinleştirme

SQLCMD betiklerini yazmak veya düzenlemek için sorgu düzenleyicisini kullanmak için SQLCMD betik modunu etkinleştirmeniz gerekir. SQLCMD modu varsayılan olarak etkin değildir. Araç çubuğunda SQLCMD Modu simgesini seçerek veya Sorgu menüsünden SQLCMD Modu'nu seçerek betik modunu etkinleştirebilirsiniz.

Uyarı

SQLCMD modunu etkinleştirdiğinizde, sorgu düzenleyicisinde IntelliSense ve Transact-SQL hata ayıklayıcısı kapatılır.

Sorgu düzenleyicisindeki SQLCMD betikleri, tüm Transact-SQL betiklerin kullandığı özellikleri kullanabilir. Bu özellikler şunlardır:

  • Renk kodlama
  • Komut dosyalarını çalıştırma
  • Kaynak denetimi
  • Skriptleri ayrıştırma
  • Gösterim Planı

Sorgu Düzenleyicisi'nde SQLCMD betiğini etkinleştirme

Etkin bir Sorgu Düzenleyicisi penceresinde SQLCMD betiğini açmak için aşağıdaki yordamı kullanın.

Sorgu düzenleyicisi penceresini SQLCMD moduna geçme

  1. Nesne Gezgini'nde sunucuya sağ tıklayın ve ardından Yeni Sorgu'yu seçerek yeni bir Sorgu Düzenleyicisi penceresi açın.

  2. Sorgu menüsünde SQLCMD Moduseçeneğini belirleyin.

    SQLCMD deyimleri sorgu düzenleyicisi bağlamında yürütülür.

  3. SQL Düzenleyicisi araç çubuğundaki kullanılabilir veritabanları listesinde AdventureWorks2025öğesini seçin.

  4. Sorgu düzenleyicisi penceresinde aşağıdaki Transact-SQL deyimlerini ve SQLCMD deyimini !!DIR yazın:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Karma Transact-SQL ve MS-DOS deyimleri bölümünü yürütmek için F5 tuşuna basın.

    İlk ve üçüncü deyimlerdeki iki SQL sonuç bölmesine dikkat edin.

  6. Sonuçları bölmesinde, İletiler sekmesini seçerek üç deyimin de iletilerini görüntüleyin:

    • (6 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Önemli

Komut satırından sqlcmd çalıştırdığınızda, işletim sistemiyle tam etkileşime izin verir. SQLCMD Modunda sorgu düzenleyicisini kullanırken etkileşimli deyimleri yürütmemeye dikkat edin. Sorgu düzenleyicisi işletim sistemi istemlerine yanıt veremiyor. Komut satırından SQLCMD çalıştırma hakkında daha fazla bilgi için bkz. sqlcmd yardımcı programı.

SQLCMD betiğini varsayılan olarak etkinleştirme

SQLCMD betiğini varsayılan olarak açmak için, Araçlar menüsünde Seçenekler'iseçin, Sorgu Yürütme 'genişletin ve SQL Server Genel sayfasını seçin ve Varsayılan olarak SQLCMD Modunda yeni sorgular aç kutusunu işaretleyin.

SQLCMD betiklerini yazma ve düzenleme

Betik modunu etkinleştirdikten sonra hem SQLCMD komutlarını hem de Transact-SQL deyimlerini yazabilirsiniz. Aşağıdaki kurallar geçerlidir:

  • SQLCMD komutları bir satırdaki ilk deyim olmalıdır.

  • Her satırda yalnızca bir SQLCMD komutuna izin verilir.

  • SQLCMD komutlarının önünde açıklama satırları ve boşluk karakterlerini kullanabilirsiniz.

  • Açıklama karakterleri içindeki SQLCMD komutları yürütülemez.

  • Tek satırlı açıklama karakterleri, iki kısa çizgi (--) ile ifade edilir ve kesinlikle satırın başında yer almalıdır.

  • İşletim sistemi komutlarının önüne iki ünlem işareti (!!) ekleyin. Çift ünlem noktaları komutu, ünlem işaretlerini izleyen deyimin cmd.exe komut işlemcisi kullanılarak yürütülmesine neden olur. sonrasındaki metin !! parametresi cmd.exeolarak geçirildiğinden, son komut satırı şu şekilde yürütülür: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • SQLCMD komutları ile Transact-SQL arasında net bir ayrım yapmak için, tüm SQLCMD komutlarını iki nokta üst üste () ile önekleyin:.

  • GO komutu, önsöz olmadan veya önünde !!:tarafından kullanılabilir.

  • Sorgu düzenleyicisi, BIR SQLCMD betiğinin parçası olarak tanımladığınız ortam değişkenlerini ve değişkenlerini destekler, ancak yerleşik SQLCMD veya osql değişkenlerini desteklemez. SSMS, büyük/küçük harf duyarlı olarak SQLCMD değişkenlerini işler. Örneğin, PRINT '$(COMPUTERNAME)' doğru sonucu verir, ancak PRINT '$(ComputerName)' bir hata döndürür.

Dikkat

SSMS, normal ve SQLCMD modunda yürütme için .NET kitaplığını kullanır SqlClient . Sorguyu komut satırından çalıştırdığınızda, sqlcmd OLE DB sağlayıcısını kullanır. Farklı varsayılan seçenekler uygulanabileceğinden, sqlcmd yardımcı programındaki SQLCMD moduna kıyasla SSMS içindeki SQLCMD modunda aynı sorguyu yürütürken farklı davranışlar görebilirsiniz.

Desteklenen SQLCMD söz dizimi

Sorgu düzenleyicisi aşağıdaki SQLCMD betik anahtar sözcüklerini destekler:

  • [!!:]GO[count]
  • !! <command>
  • :exit(statement)
  • :Quit
  • :r <filename>
  • :setvar <var> <value>
  • :connect server[\instance] [-l login_timeout] [-U user [-P password]] 1
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout 2
  • :out <filename>|stderr|stdout 2

1 Komut hakkında :connect daha fazla bilgi için bkz. sqlcmd yardımcı programındaki komutlar.

2 Sorgu düzenleyicisi, stderr ve stdout için çıkışı İletiler sekmesine gönderir.

Sorgu düzenleyicisi, önceki listeye dahil olmayan SQLCMD komutlarını desteklemez. Desteklenmeyen SQLCMD anahtar sözcükleri içeren bir betik çalıştırdığınızda, sorgu düzenleyicisi komutu yoksayar. Desteklenmeyen her anahtar sözcük için sorgu düzenleyicisi hedefe aşağıdaki iletiyi gönderir:

Ignoring command <ignored_command>

Dikkat

SQLCMD'yi komut satırından başlatmadığınızdan, SQLCMD modunda Sorgu Düzenleyicisi'ni çalıştırırken bazı sınırlamalar vardır. Değişkenler gibi komut satırı parametrelerini geçiremezsiniz. Ayrıca, sorgu düzenleyicisi işletim sistemi istemlerine yanıt veremediğinden etkileşimli deyimleri yürütmemeye dikkat etmeniz gerekir.

SQLCMD betiklerinde renk kodlama

SQLCMD betiğini etkinleştirdiğinizde betikler renk kodlanır. Transact-SQL anahtar sözcükleri için renk kodlaması aynı kalır. SQLCMD komutları gölgeli bir arka planla görüntülenir.

Örnekler

Aşağıdaki örnekte adlı testoutput.txtbir çıkış dosyası oluşturmak için SQLCMD deyimi kullanılır. İki Transact-SQL SELECT deyimi ve geçerli dizini yazdıran bir işletim sistemi komutu çalıştırır. Sonuçta elde edilen dosya, DIR deyiminden gelen mesaj çıktısını ve Transact-SQL deyimlerinden elde edilen sonuç çıktısını içerir.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO