Aracılığıyla paylaş


Sorgu Düzenleyicisi ile SQLCMD Betiklerini Düzenleme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)

SQL Server Management Studio'da Veritabanı Altyapısı Sorgu Düzenleyicisi'ni kullanarak sorguları SQLCMD betikleri olarak yazabilir ve düzenleyebilirsiniz. Aynı betikte Windows Sistem komutlarını ve Transact-SQL deyimlerini işlerken SQLCMD betiklerini kullanırsınız.

SQLCMD Modu

SQLCMD betiklerini yazmak veya düzenlemek için Veritabanı Altyapısı Sorgu Düzenleyicisi'ni kullanmak için SQLCMD betik modunu etkinleştirmeniz gerekir. Varsayılan olarak, Sorgu Düzenleyicisi'nde SQLCMD moduna izin verilmez. Araç çubuğundaki SQLCMD Modu simgesini seçerek veya Sorgu menüsünden SQLCMD Modu seçerek komut dosyası modunu etkinleştirebilirsiniz.

Bir Not

SQLCMD modunun etkinleştirilmesi, Veritabanı Altyapısı Sorgu Düzenleyicisi'nde IntelliSense'i ve Transact-SQL hata ayıklayıcısını kapatır.

Sorgu Düzenleyicisi'ndeki 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 Veritabanı Altyapısı Sorgu Düzenleyicisi penceresinde SQLCMD betiğini açmak için aşağıdaki yordamı kullanın.

Veritabanı altyapısı sorgu düzenleyicisi penceresini SQLCMD moduna geçirin

  1. Nesne Gezgini'nde, sunucuya sağ tıklayın ve yeni bir Veritabanı Altyapısı Sorgu Düzenleyicisi penceresi açmak için Yeni Sorgu seçin.

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

    Sorgu Düzenleyicisi, SQLCMD deyimlerini Sorgu Düzenleyicisi bağlamında yürütü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 !!DIR SQLCMD deyimini 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:

    • (Etkilenen 6 satır)
    • <Dizin bilgileri>
    • (Etkilenen 4 satır)

Önemli

Komut satırından yürütüldüğünde, sqlcmd yardımcı programı işletim sistemiyle tam etkileşime izin verir. SQLCMD ModuSorgu Düzenleyicisi'ni kullandığınızda, etkileşimli deyimleri yürütmemeye dikkat etmeniz gerekir. Sorgu Düzenleyicisi işletim sistemi istemlerine yanıt veremiyor.

SQLCMD'yi çalıştırma hakkında daha fazla bilgi için bkz. sqlcmd yardımcı programı veya SQLCMD öğreticisini alın.

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 SQLCMD komutları ve Transact-SQL deyimleri 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çıklamalar veya boşluk olabilir.

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

  • Tek satırlı açıklama karakterleri iki kısa çizgidir (--)) ve satırın başında yer almalıdır.

  • İşletim sistemi komutlarının önünde iki ünlem işareti (!!) bulunmalıdır. Çift ünlem noktaları komutu, ünlem işaretlerini izleyen deyimin cmd.exe komut işlemcisi kullanılarak yürütülmesine neden olur. !! sonra gelen metin cmd.exeparametresi olarak 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ın ön ekine iki nokta üst üste (:) eklenmelidir.

  • Bu GO komutu, herhangi bir önsöz olmadan veya öncesinde !!: kullanılarak çalıştırılabilir.

  • Veritabanı Altyapısı Sorgu Düzenleyicisi, BIR SQLCMD betiğinin parçası olarak tanımlanan ortam değişkenlerini ve değişkenleri destekler, ancak yerleşik SQLCMD veya osql değişkenlerini desteklemez. SQL Server Management Studio tarafından yapılan SQLCMD işlemesi, değişkenler için büyük/küçük harfe duyarlı olmaya dikkat edilmesini gerektirir. Örneğin, PRINT '$(COMPUTERNAME)' doğru sonucu verir, ancak PRINT '$(ComputerName)' bir hata döndürür.

Dikkat

SQL Server Management Studio, normal ve SQLCMD modunda yürütme için Microsoft .NET Framework SqlClient kullanır. Komut satırından çalıştırıldığında, SQLCMD OLE DB sağlayıcısını kullanır. Farklı varsayılan seçenekler uygulanabileceğinden, AYNı sorguyu SQL Server Management Studio SQLCMD modunda ve sqlcmd yardımcı programıyla yürütürken farklı davranışlar elde edebilirsiniz.

Desteklenen SQLCMD söz dizimi

Veritabanı Altyapısı 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]]
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout
  • :out <filename>|stderr|stdout

Bir Not

:error ve :outile stderr ve stdoutiçin iletiler sekmesine çıkış gönderin.

Yukarıda listelenmeyen SQLCMD komutları Sorgu Düzenleyicisi'nde desteklenmez. SQLCMD anahtar sözcüklerini içeren bir betik yürütülmezse, Sorgu Düzenleyicisi desteklenmeyen her anahtar sözcük için hedefe "Yoksayılan komut <yoksayılan komut>" iletisini gönderir. Betik başarıyla yürütülür, ancak desteklenmeyen komutlar görmezden gelinir.

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 ve 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 betikleri etkinleştirildiğinde, betikler renk kodlanır. Transact-SQL anahtar sözcükleri için renk kodlaması aynı kalır. SQLCMD komutları gölgeli bir arka plan ile sunulur.

Örnekler

Aşağıdaki örnek, testoutput.txtadlı bir çıkış dosyası oluşturmak için bir SQLCMD deyimi kullanır ve bir işletim sistemi komutuyla birlikte (geçerli dizini yazdırmak için) iki Transact-SQL SELECT deyimi yürütür. Sonuç dosyası, DIR deyiminden ileti çıkışını ve Transact-SQL deyimlerinden elde edilen sonuçları içerir.

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