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, Transact-SQL (T-SQL) deyimlerinin ve betiklerinin geçici, etkileşimli yürütülmesine ve T-SQL betik görevlerinin otomatikleştirilmesine yönelik bir komut satırı yardımcı programıdır. sqlcmd etkileşimli olarak kullanmak veya sqlcmdiçin betik dosyaları oluşturmak için T-SQL'i anlamanız gerekir. sqlcmd çeşitli şekillerde kullanabilirsiniz. Örneğin:
Komut isteminden T-SQL deyimlerini girin. Konsol sonuçları döndürür. Komut İstemi penceresini açmak için Windows arama kutusuna
cmdgirin ve açmak için Komut İstemi seçin. Komut isteminde,sqlcmdyazın ve ardından istediğiniz seçeneklerin listesini yazın. sqlcmdtarafından desteklenen seçeneklerin tam listesi için sqlcmd yardımcı programınabakın.Yürütülecek tek bir T-SQL sorgusunu belirterek veya utility'i yürütülecek T-SQL sorgularını içeren bir metin dosyasına yönlendirerek sqlcmd işini gönderin. Çıkış bir metin dosyasına yönlendirilir, ancak komut isteminde de görüntülenebilir.
SQL Server Management Studio (SSMS) Sorgu Düzenleyicisi'nde SQLCMD modu.
SQL Server Yönetim Nesneleri (SMO).
SQL Server Agent CmdExec görevleri.
Yaygın sqlcmd seçenekleri
Sunucu seçeneği (
-S) sqlcmd bağlandığı SQL Server örneğini tanımlar.Kimlik doğrulama seçenekleri (
-E,-Uve-P), sqlcmd SQL Server örneğine bağlanmak için kullandığı kimlik bilgilerini belirtir.Note
seçeneği
-Evarsayılandır ve belirtilmesi gerekmez.Giriş seçenekleri (
-Q,-qve-i), sqlcmd 'teki girdinin konumunuolarak tanımlar.Çıkış seçeneği (
-o), sqlcmd çıkışını yerleştirdiği dosyayı belirtir.
sqlcmd yardımcı programıyla bağlantı kurma
T-SQL deyimlerini etkileşimli olarak çalıştırmak için Windows Kimlik Doğrulamasını kullanarak varsayılan örneğe bağlanın:
sqlcmd -S <ComputerName>Note
Önceki örnekte,
-Evarsayılan olduğundan belirtilmemiştir ve sqlcmd , Windows Kimlik Doğrulaması'nı kullanarak varsayılan örneğe bağlanır.T-SQL deyimlerini etkileşimli olarak çalıştırmak için Windows Kimlik Doğrulaması kullanarak adlandırılmış örneğe bağlanın:
sqlcmd -S <ComputerName>\<InstanceName>or
sqlcmd -S .\<InstanceName>Windows Kimlik Doğrulaması kullanarak ve giriş ve çıkış dosyalarını belirterek adlandırılmış örneğe bağlanın:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Windows Kimlik Doğrulaması ile yerel bilgisayardaki varsayılan örneğe bağlanın, bir sorgu yürütin ve sorgu tamamlandıktan sonra sqlcmd çalışır durumda tutun:
sqlcmd -q "SELECT * FROM AdventureWorks2022.Person.Person"Windows Kimlik Doğrulaması ile yerel bilgisayardaki varsayılan örneğe bağlanın, bir sorgu yürütün, çıkışı bir dosyaya yönlendirin ve sorgu tamamlandıktan sonra sqlcmd'dan çıkın.
sqlcmd -Q "SELECT * FROM AdventureWorks2022.Person.Person" -o MyOutput.txtile sqlcmd, parola isteğinde bulunarak T-SQL deyimlerini etkileşimli olarak çalıştırmak için SQL Server Kimlik Doğrulaması kullanarak belirtilmiş bir örneğe bağlanın.
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Tip
sqlcmd yardımcı programı tarafından desteklenen seçeneklerin listesini görmek için şu komutu çalıştırın:
sqlcmd -?.
sqlcmd kullanarak Transact-SQL deyimlerini etkileşimli olarak çalıştırma
Komut İstemi penceresinde T-SQL deyimlerini yürütmek için sqlcmd yardımcı programını etkileşimli olarak kullanabilirsiniz.
sqlcmdkullanarak T-SQL deyimlerini etkileşimli olarak yürütmek için -Q, -q, -Zveya -i seçeneklerini kullanmadan giriş dosyalarını veya sorgularını belirtmek üzere yardımcı programını çalıştırın. Örneğin:
sqlcmd -S <ComputerName>\<InstanceName>
Komut giriş dosyaları veya sorguları olmadan yürütülürken, sqlcmd belirtilen SQL Server örneğine bağlanır ve ardından 1> içeren yeni bir çizgi ve ardından sqlcmd istemi olarak adlandırılan yanıp sönen alt çizgi görüntüler.
1 bunun bir T-SQL deyiminin ilk satırı olduğunu bildirir ve sqlcmd istemi, T-SQL deyimini yazdığınızda başlama noktasıdır.
sqlcmd isteminde, T-SQL deyimlerini ve ve GO gibi sqlcmd EXIT yazabilirsiniz. Her T-SQL deyimi komut önbelleği adlı bir arabelleğe konur. Bu ifadeler, GO komutunu yazıp Enterbastıktan sonra SQL Server'a gönderilir.
sqlcmd'dan çıkmak için, yeni satırın başına EXIT veya QUIT yazın.
Deyim önbelleğini temizlemek için :RESETyazın.
Ctrl+C yazmak, sqlcmd'in çıkmasına neden olur.
Ctrl+C, bir GO komutu verildikten sonra deyim önbelleğinin yürütülmesini durdurmak için de kullanılabilir.
Etkileşimli bir oturuma girilen T-SQL deyimleri, :ED komutu ve sqlcmd komut istemi girilerek düzenlenebilir. Düzenleyici açılır ve T-SQL deyimini düzenleyip düzenleyiciyi kapattıktan sonra, düzeltilmiş T-SQL deyimi komut penceresinde görünür. Düzeltilmiş T-SQL deyimini çalıştırmak için GO girin.
Tırnak içine alınmış metin dizgileri
Tırnak içine alınmış karakterler, ek ön işleme olmadan kullanılır; ancak, ardışık iki tırnak işareti girilerek bir dizeye tırnak işaretleri eklenebilir. SQL Server bu karakter dizisini tek bir tırnak işareti olarak ele alır. (Ancak, çeviri sunucuda gerçekleşir.) Betik değişkenleri, bir dize içinde göründüklerinde genişletilmiyor.
Örneğin:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Sonuç kümesi aşağıdadır.
Length: 5" 7'
Birden çok satıra yayılan dizeler
sqlcmd birden çok satıra yayılan dizeleri destekler. Örneğin, aşağıdaki SELECT deyimi birden çok satıra yayılarak GO yazıp enter tuşuna bastıktan sonra tek bir dize olarak yürütülür.
SELECT <First line>
FROM <Second line>
WHERE <Third line>;
GO
Etkileşimli sqlcmd örneği
Bu, sqlcmd etkileşimli olarak çalıştırdığınızda gördüklerinize bir örnektir.
Komut İstemi penceresini açtığınızda şuna benzer bir satır vardır:
C:\Temp\>
Bu, C:\Temp\ klasörün geçerli klasör olduğu anlamına gelir ve bir dosya adı belirtirseniz, Windows bu klasördeki dosyayı arar.
Yerel bilgisayardaki varsayılan SQL Server örneğine bağlanmak için sqlcmd yazın ve Komut İstemi penceresinin içeriği aşağıdaki gibidir:
C:\Temp>sqlcmd
1>
Bu, SQL Server örneğine bağlandığınız ve sqlcmd artık T-SQL ifadelerini kabul etmeye ve sqlcmd komutlarını çalıştırmaya hazır olduğu anlamına gelir.
1> sonra yanıp sönen alt çizgi, yazdığınız deyimlerin ve komutların görüntülendiği konumu işaretleyen sqlcmd istemidir. Şimdi USE AdventureWorks2022 yazın ve enter basın, ardından GO yazıp enter basın. Komut İstemi penceresinin içeriği aşağıdaki gibidir:
sqlcmd
USE AdventureWorks2022;
GO
Sonuç kümesi aşağıdadır.
Changed database context to 'AdventureWorks2022'.
1>
Enter'a bastığınızda, sqlcmd'e yeni bir satır başlatması için sinyal gönderilir.
yazdıktan sonra GO tuşuna basılması sqlcmd USE AdventureWorks2022 deyimini SQL Server örneğine göndermesini sağlar.
sqlcmd, USE deyiminin başarıyla tamamlandığını belirten bir ileti döndürür ve yeni bir deyim veya komut girmek için sinyal olarak yeni bir 1> istemi görüntüler.
Aşağıdaki örnek, bir SELECT deyimi, GOyürütmek için bir SELECT ve sqlcmd EXITçıkmak için bir yazdığınızda Komut İstemi penceresinin neler içerdiğini gösterir:
USE AdventureWorks2022;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Sonuç kümesi aşağıdadır.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
Çıktıyı oluşturduktan sonra sqlcmdsqlcmd istemini sıfırlar ve 1> görüntülenir. Oturumdan çıkmak için EXIT isteminde 1> yazın. Artık başka bir EXIT komutu yazarak Komut İstemi penceresini kapatabilirsiniz.
SQL Server kapsayıcısı oluşturma ve sorgulama
Kapsayıcıda yeni bir SQL Server örneği oluşturmak için sqlcmd (Go) kullanabilirsiniz.
sqlcmd (Go), geliştirme, hata ayıklama ve analiz amacıyla hızla bir SQL Server örneği oluşturmak üzere kapsayıcı görüntüsü ve SQL Server yedeklemesi belirtmenize olanak tanıyan bir create deyimi sunar.
Aşağıdaki komut, yeni bir SQL Server kapsayıcısı oluşturmak için kullanılabilen tüm seçeneklerin nasıl görüntüleneceği gösterir:
sqlcmd create mssql --help
Aşağıdaki komut, SQL Server 2022'nin (16.x) en son sürümünü kullanarak yeni bir SQL Server örneği oluşturur ve ardından Wide World Importers örnek veritabanını geri yükler:
sqlcmd create mssql --accept-eula --tag 2022-latest --using https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak
SQL Server örneği oluşturulduktan sonra sqlcmd (Go) kullanarak bu örneği yönetebilir ve sorgulayabilirsiniz.
Aşağıdaki komut, oluşturulan örneğin sürümünü onaylar:
sqlcmd query "SELECT @@version"
Aşağıdaki komut, oluşturulan örnekle etkileşimli bir oturum başlatır:
sqlcmd query
Aşağıdaki komut Azure Data Studio'yu açar ve oluşturma işlemi sırasında geri yüklenen veritabanına otomatik olarak bağlanır:
sqlcmd open ads
Aşağıdaki komut, oluşturulan örneğe bağlanmak için kullanılacak bağlantı dizelerini listeler:
sqlcmd config connection-strings
Artık gerekli olmadığında kapsayıcıyı kaldırmak için aşağıdaki komut kullanılır:
sqlcmd delete
sqlcmd kullanarak Transact-SQL betik dosyalarını çalıştırma
veritabanı betik dosyalarını yürütmek için sqlcmd kullanabilirsiniz. Betik dosyaları, T-SQL deyimlerinin bir karışımını, sqlcmd komutlarını ve betik değişkenlerini içeren metin dosyalarıdır. Değişkenlerle betik hazırlama hakkında daha fazla bilgi için bkz. sqlcmd'yi değişkenlerle kullanma. sqlcmd, bir betik dosyasındaki deyimler, komutlar ve betik oluşturma değişkenleriyle etkileşimli olarak girilen deyimler ve komutlarla nasıl çalıştığına benzer şekilde çalışır. Temel fark, sqlcmd kullanıcının deyimleri, komutları ve betik değişkenlerini girmesini beklemek yerine giriş dosyasını duraklatmadan okumasıdır.
Veritabanı betik dosyaları oluşturmanın farklı yolları vardır:
SQL Server Management Studio'da etkileşimli bir şekilde bir dizi T-SQL deyimini derleyip hatalarını ayıklayabilir ve ardından sorgu penceresinin içeriğini betik dosyası olarak kaydedebilirsiniz.
Not Defteri gibi bir metin düzenleyicisi kullanarak T-SQL deyimleri içeren bir metin dosyası oluşturabilirsiniz.
Examples
A. sqlcmd kullanarak bir betiği çalıştırma
Not Defteri'ni başlatın ve aşağıdaki T-SQL deyimlerini yazın:
USE AdventureWorks2022;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
MyFolder adlı bir klasör oluşturun ve betiği MyScript.sqlklasörüne dosya C:\MyFolder olarak kaydedin. Komut istemine aşağıdaki komutu girerek betiği çalıştırın ve çıktıyı MyOutput.txt içine MyFolderyerleştirin.
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Sonuç kümesi aşağıdadır.
Changed database context to 'AdventureWorks2022'.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Ayrılmış yönetim bağlantısıyla sqlcmd kullanma
Aşağıdaki örnekte, sqlcmd ayrılmış yönetici bağlantısı (DAC) kullanılarak engelleme sorunu olan bir sunucuya bağlanmak için kullanılır.
C:\Temp\>sqlcmd -S ServerName -A
1> SELECT session_id, blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
2> GO
Sonuç kümesi aşağıdadır.
session_id blocking_session_id
----------- --------------------`
62 64
(1 rows affected)
Engelleme işlemini sonlandırmak için sqlcmd kullanın.
1> KILL 64;
2> GO
C. Saklı bir yordam çalıştırmak için sqlcmd kullanın
Aşağıdaki örnekte, sqlcmdkullanarak bir saklı yordamın nasıl yürütüldiği gösterilmektedir. Aşağıdaki saklı yordamı oluşturun.
USE AdventureWorks2022;
GO
IF OBJECT_ID('dbo.ContactEmailAddress', 'P') IS NOT NULL
DROP PROCEDURE dbo.ContactEmailAddress;
GO
CREATE PROCEDURE dbo.ContactEmailAddress (
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50)
)
AS
SET NOCOUNT ON;
SELECT EmailAddress
FROM Person.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF;
GO
sqlcmd istemine aşağıdakileri girin:
C:\Temp\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(FirstName),$(LastName)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D. Veritabanı bakımı için sqlcmd kullanma
Aşağıdaki örnekte, veritabanı bakım görevi için sqlcmd nasıl kullanılacağı gösterilmektedir. Aşağıdaki kodla C:\Temp\BackupTemplate.sql oluşturun.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
sqlcmd istemine aşağıdaki kodu girin:
C:\Temp\>sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile C:\Temp\msdb.bak
1> :r C:\Temp\BackupTemplate.sql
2> GO
Changed database context to 'master'.
Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.
Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.
BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)
E. Birden çok örnekte kod yürütmek için sqlcmd kullanma
Aşağıdaki dosyada yer alan kod, iki örneğe bağlantı kuran bir betiği göstermektedir. İkinci örneğe bağlantı yapmadan önceki GO fark edin.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
E. XML çıktısı döndürme
Aşağıdaki örnekte, XML çıkışının sürekli bir akışta biçimlendirilmemiş olarak nasıl döndürülmüş olduğu gösterilmektedir.
C:\Temp\>sqlcmd -d AdventureWorks2022
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F. Windows betik dosyasında sqlcmd kullanma
gibi bir sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, komutu VBScript ile birlikte bir .bat dosyasında yürütülebilir. Bu durumda etkileşimli seçenekleri kullanmayın.
sqlcmd .bat dosyasını yürüten bilgisayara yüklenmelidir.
İlk olarak, C:\Tempiçinde aşağıdaki dört dosyayı oluşturun:
C:\Temp\badscript.sql
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GOC:\Temp\goodscript.sql
SELECT 'batch #1'; GO SELECT 'batch #2'; GOC:\Temp\returnvalue.sql
:exit(select 100)C:\Temp\windowsscript.bat
@echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exit
Ardından komut isteminde C:\Temp\windowsscript.batçalıştırın:
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
G. Azure SQL Veritabanı'nda şifrelemeyi ayarlamak için sqlcmd kullanma
sqlcmd, şifreleme ve sertifika güveni belirtmek için SQL Veritabanı verilerine bağlantıda yürütülebilir. İki sqlcmd seçeneği mevcuttur:
-Nanahtarı, istemci tarafından şifreli bağlantı istemek için kullanılır. Bu seçenek,ENCRYPT = trueADO.net seçeneğine eşdeğerdir.-Canahtarı, istemci tarafından sunucu sertifikasına örtük olarak güvenmek ve doğrulama yapmamak üzere yapılandırmak için kullanılır. Bu seçenek,TRUSTSERVERCERTIFICATE = trueADO.net seçeneğine eşdeğerdir.
SQL Veritabanı hizmeti, SQL Server örneğinde kullanılabilen tüm SET seçeneklerini desteklemez. Aşağıdaki seçenekler, ilgili SET seçeneği ON veya OFFolarak ayarlandığında bir hata oluşturur:
SET ANSI_DEFAULTSSET ANSI_NULLSSET REMOTE_PROC_TRANSACTIONSSET ANSI_NULL_DEFAULT
Aşağıdaki SET seçenekleri özel durum oluşturmaz ancak kullanılamaz. Kullanım dışı bırakıldılar:
SET CONCAT_NULL_YIELDS_NULLSET ANSI_PADDINGSET QUERY_GOVERNOR_COST_LIMIT
Syntax
Aşağıdaki örnekler, SQL Server Yerel İstemci Sağlayıcısı ayarlarının şunları içerdiği durumlara başvurur:
ForceProtocolEncryption = FalseTrust Server Certificate = No
Windows kimlik bilgilerini kullanarak bağlanın ve iletişimi şifreleyin:
sqlcmd -E -N
Windows kimlik bilgilerini kullanarak bağlanın ve sunucu sertifikasına güvenin:
sqlcmd -E -C
Windows kimlik bilgilerini kullanarak bağlanın, iletişimi şifreleyin ve sunucu sertifikasına güvenin:
sqlcmd -E -N -C
Aşağıdaki örnekler, SQL Server Yerel İstemci Sağlayıcısı ayarlarının şunları içerdiği durumlara başvurur:
ForceProtocolEncryption = TrueTrustServerCertificate = Yes
Windows kimlik bilgilerini kullanarak bağlanın, iletişimi şifreleyin ve sunucu sertifikasına güvenin:
sqlcmd -E
Windows kimlik bilgilerini kullanarak bağlanın, iletişimi şifreleyin ve sunucu sertifikasına güvenin:
sqlcmd -E -N
Windows kimlik bilgilerini kullanarak bağlanın, iletişimi şifreleyin ve sunucu sertifikasına güvenin:
sqlcmd -E -C
Windows kimlik bilgilerini kullanarak bağlanın, iletişimi şifreleyin ve sunucu sertifikasına güvenin:
sqlcmd -E -N -C
Sağlayıcı ForceProtocolEncryption = Truebelirtirse, bağlantı dizesinde Encrypt=No bile şifreleme etkinleştirilir.