Sqlcmd yardımcı programını kullanın
sqlcmdGeçici, etkileşimli yürütülmesi için bir komut satırı yardımcı programı olan Transact-SQLdeyimleri ve komut dosyaları ve otomatikleştirmek için Transact-SQLgörevler için komut dosyası. Kullanmak için sqlcmdetkileşimli ya da kullanılarak çalıştırılacak komut dosyaları oluşturmak için sqlcmd, kullanıcı-meli anlamak Transact-SQL. sqlcmdYardımcı programı genellikle aşağıdaki şekillerde kullanılır:
Kullanıcıların etkileşimli olarak girmek Transact-SQLdeyimleri Komut isteminde çalışan benzer şekilde. Sonuçlar, komut isteminde görüntülenir. Bir komut istemi penceresi açmak için tıklatın Start, tıklatın Tüm programlar, Gelin aksesuarlarıve ardından komut istemi. Komut istemine sqlcmd istediğiniz seçenekleri listesi tarafından izledi. Tarafından desteklenen seçeneklerin tam listesi için sqlcmdbakın Sqlcmd yardımcı programı.
Kullanıcıların bir sqlcmdbir tek belirterek ya da iş Transact-SQLdeyimini yürütmek için veya yardımcı programını içeren bir metin dosyasına işaret Transact-SQLdeyimleri yürütmek için. Çıktı genellikle metin dosyasına yönlendirilir, ancak komut isteminde de görüntülenebilir.
sqlcmd modu de SQL Server Management Studiosorgu Düzenleyicisi.
SQL Server Yönetim nesneleri (smo)
SQL Server Aracısı CmdExec işler.
Genellikle kullanılan sqlcmd seçenekleri
Aşağıdaki seçenekleri en sık kullanılan:
Sunucu seçeneği (-S) örneğini tanımlayan Microsoft SQL Serveriçin sqlcmdbağlanır.
Kimlik doğrulama seçenekleri (-E, -U, ve -P) kimlik bilgilerini belirtmek, sqlcmdörneğine bağlanmak için kullandığı SQL Server.
[!NOT]
-ESeçeneği varsayılandır ve belirtilmesi zorunlu değildir.
Giriş seçenekleri (-Q, -q, ve -i) girişi konumunu belirlemek sqlcmd.
Çıkış seçeneği (-o) olan dosyayı belirtir sqlcmdçıktısı koymak için.
Bağlanmak için sqlcmd yardımcı programı
Aşağıdaki yaygın kullanımı olan sqlcmdyarar:
Varsayılan örneği için etkileşimli olarak çalıştırmak için Windows kimlik doğrulaması kullanarak bağlanma Transact-SQLdeyimleri:
sqlcmd -S <ComputerName>
[!NOT]
Önceki örnekte, -Eçünkü varsayılan belirtilmemiş ve sqlcmdvarsayılan örneğine Windows kimlik doğrulaması kullanarak bağlanan.
Etkileşimli olarak çalıştırmak için Windows kimlik doğrulaması kullanarak adlandırılmış bir örneğine bağlama Transact-SQLdeyimleri:
sqlcmd -S <ComputerName>\<InstanceName>
veya
sqlcmd -S .\<InstanceName>
Windows kimlik doğrulaması kullanarak ve giriş ve çıkış dosyaları belirterek adlandırılmış bir örneğine bağlama:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>
Yerel bilgisayardaki varsayılan örneğine Windows kimlik doğrulaması kullanarak, bir sorguyu yürüttükten ve sahip bağlanma sqlcmdsorgunun çalışması bittikten sonra çalışmaya devam eder:
sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"
Yerel bilgisayardaki varsayılan örneğine bağlanırken Windows kimlik doğrulaması kullanarak, bir sorgu yürütülürken, çıktıyı bir dosyaya yönlendirerek ve sahip sqlcmdsorgunun çalışması bittikten sonra çıkış:
sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt
Bir adlandırılmış örneği kullanarak bağlanma SQL Serveretkileşimli olarak çalıştırmak için kimlik doğrulama Transact-SQLdeyimleri ile sqlcmdiçin bir parola sorulmasını:
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
[!NOT]
Tarafından desteklenen seçeneklerin listesini görmek için sqlcmdyardımcı programını çalıştırın: sqlcmd -?.
Transact-sql deyimlerinin etkileşimli kullanma sqlcmd çalıştıran
Sen-ebilmek kullanma sqlcmdetkileşimli olarak çalışmasına yardımcı Transact-SQLdeyimleri Komut İstemi penceresinde. Etkileşimli olarak çalıştırmak için Transact-SQLifadeler kullanarak sqlcmd, yardımcı programı kullanmadan çalıştırmak -Q, -q, -Z, ya -iseçeneklerden herhangi bir giriş dosyaları veya sorgular. Örneğin:
sqlcmd -S <ComputerName>\<InstanceName>
Komut giriş dosyaları veya sorguları yürütüldüğünde sqlcmdbelirtilen örneğine bağlar SQL Serverve yeni bir satır görüntüler bir 1>adlı bir yanıp sönen çizgi tarafından takip sqlcmdistemi. 1Bu ilk satır olduğunu belirtir bir Transact-SQLdeyimi ve sqlcmdsor hangi noktada olduğunu Transact-SQLdeyimi, yazdığınızda başlayacak in.
sqlcmdİstemi, hem de yazabilirsiniz Transact-SQLdeyimleri ve sqlcmdkomutları, gibi GOve EXIT. Her Transact-SQLdeyimini deyimi önbellek adı verilen bir arabelleğe alınır. Bu ifadeler gönderilen SQL Serveryazdıktan sonra go komut ve enter tuşuna basın. Çıkmak için sqlcmdtürü çıkmak veya Çık yeni bir satır başında.
Deyimi önbelleğini temizlemek için yazın : araştırma. Yazarak ^ c neden sqlcmdçıkmak için. ^Csonra deyimi önbellek yürütülmesini durdurmak için de kullanılabilir bir GOkomutu verilmiş.
Transact-SQLEtkileşimli oturum içinde girilen deyimleri düzenlenmiş girerek : ed komutu ve sqlcmdistemi. Düzenleyici olacak açık ve düzenledikten sonra Transact-SQLdeyimi ve Editör, düzenlenen kapanış Transact-SQLdeyimi komut penceresinde görünecek. Girmek go çalıştırmak için düzenlenen Transact-SQLdeyimi.
Tırnak içinde dize
Alıntı işaretleri, iki ardışık tırnak işareti girerek bir dizge içine eklenebilir dışında tırnak içine alınmış karakterlerden herhangi bir ek Önişleme olmadan, kullanılır. SQL ServerBu karakter dizisi, tek tırnak işareti davranır. (Ancak, çeviri, sunucu oluşur.) Bir dizge içinde görüntülendiğinde komut dosyası değişkenleri genişletilecek değil.
Örneğin:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Sonuç kümesi buradadır.
Length: 5" 7'
Birden çok satıra yayılan dizeleri
sqlcmdbirden çok satıra yayılan dizeleri olan komut dosyalarını destekler. Örneğin, aşağıdaki SELECTdeyimi birden çok satıra yayılan ancak bir tek dizgesi yazdıktan sonra enter tuşuna bastığınızda idam GO.
SELECT First line
FROM Second line
WHERE Third line;
GO
Etkileşimli sqlcmd örneği
Ne zaman sen koşmak gördüğünüz örnek budur sqlcmdetkileşimli.
Bir komut istemi penceresi açın, orada bir satır benzer:
C:\> _
Bu klasörü demektir C:\geçerli klasördür ve bir dosya adı belirtirseniz, Windows o klasördeki dosya arayacaktır.
Türü sqlcmd varsayılan örneğine bağlanmak için SQL ServerYerel bilgisayar ve içeriği komut istemi penceresi olacak:
C:\>sqlcmd
1> _
Yani örneğine bağlı SQL Serverve sqlcmdartık kabul etmeye hazır olduğunu Transact-SQLdeyimleri ve sqlcmdkomutları. Sonra yanıp sönen çizgi 1>olan sqlcmdhangi deyimleri ve yazdığınız komutları görüntülenir yer işaretleri istemi. Şimdi, yazın use AdventureWorks2012 ve enter tuşuna basın ve sonra yazın go ve enter tuşuna basın. Komut istemi penceresinin içeriğini olacaktır:
sqlcmd
USE AdventureWorks2012;
GO
Sonuç kümesi buradadır.
Changed database context to 'AdventureWorks2012'.
1> _
Girdikten sonra enter tuşuna basarak USE AdventureWorks2012sinyal sqlcmdyeni bir satır başlatmak için. Yazdıktan sonra enter tuşuna basarak GO,sinyal sqlcmdgöndermek için USE AdventureWorks2012deyimi örneği SQL Server. sqlcmdbelirtmek için bir iletinin döndürülen USEdeyimi başarıyla tamamlandı ve yeni görüntülenen 1>Yeni deyimi veya komut girmek için bir sinyal olarak komut istemi.
Aşağıdaki örnek ne bir komut istemi penceresi içerir Eğer yazdığınız gösterir bir SELECTdeyimi, bir GOyürütmek için SELECTve EXITçıkmak için sqlcmd:
sqlcmd
USE AdventureWorks2012;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Sonuç kümesi buradadır.
BusinessEntityID FirstName LastName
----------- -------------------------------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
1> EXIT
C:\>
Satır satır sonra 3> GOçıkışı olan bir SELECTdeyimi. Çıktı, oluşturduktan sonra sqlcmdsıfırlar sqlcmdistemi ve görüntüler 1>. Girdikten sonra EXITsatırında 1>bunu ilk açtığınızda yaptım aynı satırda komut istemi penceresini görüntüler Bu gösterir sqlcmdonun oturumu çıkıldı. Başka yazarak bir komut istemi penceresi şimdi kapa EXITkomut.
Kullanma sqlcmd tarafından Transact-sql komut dosyalarını çalıştırma
Sen-ebilmek kullanma sqlcmdVeritabanı komut dosyalarını yürütmek için. Komut dosyalarını bir karışımını içeren metin dosyaları olan Transact-SQLdeyimleri, sqlcmdkomutları ve komut dosyası değişkenleri. Komut dosyası değişkenleri hakkında daha fazla bilgi için bkz: Sqlcmd Scripting değişkenleri ile kullanma. sqlcmddeyimleri, komutları ve komut dosyası değişkenleri komut dosyası deyimlerini ve etkileşimli olarak girilen komutlar ile şekli için benzer şekilde çalışır. Ana fark sqlcmdaracılığıyla kullanıcının deyimleri, komutları ve komut dosyası değişkenleri girmek için bekleyen yerine duraklatma olmadan giriş dosyasını okur.
Veritabanı komut dosyaları oluşturmak için farklı yolu vardır:
Etkileşimli olarak oluşturmak ve bir dizi hata ayıklama Transact-SQLdeyimleri SQL Server Management Studiove Sorgu penceresinin içeriğini bir komut dosyası kaydedersiniz.
Sen-ebilmek yaratmak a metin dosyasını içeren Transact-SQLNot Defteri gibi bir metin düzenleyicisi kullanarak deyimleri.
Örnekler
A.Sqlcmd kullanarak komut dosyası çalıştırma
Not Defteri'ni açın ve aşağıdaki komutu yazın Transact-SQLdeyimleri:
USE AdventureWorks2012;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Adında bir klasör oluşturun MyFolderve sonra komut dosyası MyScript.sqlklasöründe C:\MyFolder. Aşağıdaki komut dosyasını çalıştırmak ve çıkış koymak için komut satırına girin MyOutput.txtde MyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
İçeriğini görüntülediğinizde MyOutput.txtNot Defteri'nde aşağıdaki göreceksiniz:
Changed database context to 'AdventureWorks2012'.
BusinessEntityID FirstName LastName
---------------- ----------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B.Adanmış bir yönetici bağlantı SQLCMD kullanma
Aşağıdaki örnekte, sqlcmdadanmış yönetici bağlantısı (dac) kullanarak bir engelleme sorunu olan bir sunucuya bağlanmak için kullanılır.
C:\>sqlcmd -S ServerName -A
1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;
2> GO
Sonuç kümesi buradadır.
spid blocked
------ -------
62 64
(1 rows affected)
Kullanım sqlcmdengelleme işlemi sonlandırmak için.
1> KILL 64;
2> GO
C.Bir saklı yordamı yürütmek için SQLCMD kullanma
Aşağıdaki örnek kullanarak bir saklı yordamı yürütmek gösterilmiştir sqlcmd. Aşağıdaki saklı yordam oluşturun.
USE AdventureWorks2012;
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
sqlcmdİsteminde, aşağıdakini girin:
C:\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D.Veritabanı bakım için SQLCMD kullanma
Aşağıdaki örnek, nasıl kullanılacağını gösterir sqlcmdveritabanı bakım görev. Oluşturma C:\BackupTemplate.sqlAşağıdaki kod ile.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
sqlcmdİsteminde, aşağıdakini girin:
C:\ >sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile c:\msdb.bak
1> :r c:\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 kodu yürütmek için SQLCMD kullanma
İki örneklerine bağlayan bir komut dosyasına aşağıdaki kodu gösterir. Haber GOönce ikinci örneği bağlantı.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
E.xml çıktı döndürme
Aşağıdaki örnek, nasıl xml çıktısı sürekli bir akış biçimlendirilmemiş, döndürülen gösterir.
C:\>sqlcmd -d AdventureWorks2012
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F.Sqlcmd bir Windows komut dosyası kullanma
A sqlcmdgibi komut sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, bir .bat dosyası VBScript ile birlikte idam. Bu durumda, etkileşimli seçenekleri kullanmayın. sqlcmd.bat dosyası yürütülürken bilgisayarda yüklü olmalıdır.
Önce aşağıdaki dört dosya oluşturun:
C:\badscript.SQL
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GO
C:\goodscript.SQL
SELECT 'batch #1' GO SELECT 'batch #2' GO
C:\returnvalue.SQL
:exit(select 100) @echo off C:\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
Sonra komut isteminde çalıştırın C:\windowsscript.bat:
C:\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
G.sql Azure veritabanı şifreleme için SQLCMD kullanma
A sqlcmdbağlantısı idam SQL Azureiçin veri şifreleme ve sertifika güven belirtin. İki sqlcmd seçenekler mevcuttur:
-n anahtarını, şifreli bir bağlantı isteği için istemci tarafından kullanılır. Bu seçenek, ADO'ya eşdeğerdir. NET seçeneği ENCRYPT = true.
–c anahtarı, dolaylı güven sunucu sertifikası yapılandırmak ve doğrulamak değil istemci tarafından kullanılır. Bu seçenek, ADO'ya eşdeğerdir. NET seçeneği ENCRYPT = true.
SQL AzureHizmet does değil çekmek tüm SETbir SQL Server örneği üzerinde kullanılabilir seçenekler. Aşağıdaki seçeneklerden bir hata atmak ne zaman ilgili SETseçeneğini ayarlamak ONveya OFF:
SET ANSI_DEFAULTS
SET ANSI_NULLS
SET REMOTE_PROC_TRANSACTIONS
SET ANSI_NULL_DFLT_ON
Aşağıdaki set seçenekleri, özel durumlar atmayın ama kullanılamaz. Onlar onaylanmaz:
SET CONCAT_NULL_YIELDS_NULL
SET ANSI_PADDING
SET QUERY_GOVERNOR_COST_LIMIT
Sözdizimi
Durumlar için aşağıdaki örneklere bakın nerede SQL Serveryerel istemci sağlayıcısını ayarlar içerir: ForceProtocolEncryption = False,Trust Server Certificate = No
Windows kimlik bilgilerini kullanarak bağlamak ve iletişimi şifrelemek:
SQLCMD –E –N
Windows kimlik bilgileri ve güven sunucu sertifikası kullanarak bağlan:
SQLCMD –E –C
Windows kimlik bilgilerini kullanarak bağlan, iletişim ve güven sunucu sertifikasının şifreleme:
SQLCMD –E –N –C
Durumlar için aşağıdaki örneklere bakın nerede SQL Serveryerel istemci sağlayıcısını ayarlar içerir: ForceProtocolEncryption = True, TrustServerCertificate = Yes.
Windows kimlik bilgilerini kullanarak bağlan, iletişim ve güven sunucu sertifikasının şifreleme:
SQLCMD –E
Windows kimlik bilgilerini kullanarak bağlan, iletişim ve güven sunucu sertifikasının şifreleme:
SQLCMD –E –N
Windows kimlik bilgilerini kullanarak bağlan, iletişim ve güven sunucu sertifikasının şifreleme:
SQLCMD –E –T
Windows kimlik bilgilerini kullanarak bağlan, iletişim ve güven sunucu sertifikasının şifreleme:
SQLCMD –E –N –C
Sağlayıcıyı belirtir, ForceProtocolEncryption = Truesonra şifreleme etkin bile Encrypt=Nobağlantı dizesinde.
Ayrıca bkz.
Başvuru
Kavramlar
Sqlcmd Scripting değişkenleri ile kullanma