Sqlcmd yardımcı programını kullanma
The sqlcmd utility is a Microsoft Win32 komut dosyası kullanan kullanan istemi utility for ad hoc, interactive execution of Transact-SQL statements and scripts and for automating Transact-SQL komut dosyası kullanan tasks. Kullanmak için Sqlcmd etkileşimli olarak veya kullanılarak çalıştırılacak komut dosyaları oluşturmak içinSqlcmd kullanıcılar anlamalısınız.Transact-SQL. The sqlcmd utility is typically used in the following ways:
Kullanıcıların etkileşimli olarak girin Transact-SQL komut istemi isteminde çalışmaya benzer bir şekilde deyimleri. Sonuçlar, komut istemi isteminde görüntülenir.Bir komut istemi penceresi açmak için tıklatın... START, click Tüm Programlar, point to Donatıları sonra'ı tıklatınKomut İstemi.komut istemi istemine Sqlcmd istediğiniz seçenekleri listesini izler.Tarafından desteklenen seçeneklerin tam listesi için Sqlcmd, see SQLCMD yardımcı programı.
Kullanıcıların gönderme bir Sqlcmd ya da bunun belirten tek bir işTransact-SQL çalıştırmak için , deyim veya yardımcı programı içeren bir metin dosyasına işaret Transact-SQL yürütülecek deyimleri'ı tıklatın. Çıktı, genellikle bir metin dosyasına yönlendirilir, ancak komut istemi isteminde de görüntülenebilir.
SQLCMD modu in SQL Server Management Studio Sorgu Düzenleyicisi.
SQL Server Management Objects (SMO)
SQL Server Agent CmdExec işler.
Genellikle kullanılan sqlcmd seçenekleri
Aşağıdaki seçeneklerden en sık kullanılan:
The server option (-S) that identifies the instance of Microsoft SQL Server to which sqlcmd connects.
kimlik doğrulaması seçenekleri ((ingilizce)-E, -U, and -P) bu kimlik bilgileri belirtmekSqlcmd bağlanmak için kullandığı örnek SQL Server.
Not
The -E option is the default and does not have to be specified.
(Giriş seçenekleri-Q, -q, and -i) giriş için konumunu belirleSqlcmd.
Çıktı seçeneği (-o) hangi dosyayı belirtirSqlcmd çıktısı koymaktır.
Sqlcmd yardımcı programı için bağlanma
Aşağıdaki genel kullanımı olan Sqlcmd yardımcı programı:
Bağlanan bir varsayılan örnek etkileşimli çalıştırmak için Windows kimlik doğrulaması'nı kullanarak Transact-SQL ifadeler:
sqlcmd -S <ComputerName>
Not
Önceki örnekte, -E ve varsayılan olduğundan belirtilmediSqlcmd bağlandığı varsayılan örnek Windows kimlik doğrulaması'nı kullanarak.
Bağlanan bir adlandırılmış örnek etkileşimli çalıştırmak için Windows kimlik doğrulaması'nı kullanarak Transact-SQL ifadeler:
sqlcmd -S <ComputerName>\<InstanceName>
veya
sqlcmd -S .\<InstanceName>
Adlandırılmış bir bağlanma örnek Windows kimlik doğrulaması kullanarak ve giriş ve çıkış dosyaları belirtme:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>
Bağlanma varsayılan örnek Windows kimlik doğrulaması kullanarak, bir sorguyu yürüttükten ve sahip yerel bilgisayarda Sqlcmd Kalan çalışan sorgunun çalışması bittikten sonra:
sqlcmd -q "SELECT * FROM AdventureWorks.Person.Contact"
Varsayılan bağlantı örnek kullanarak Windows kimlik doğrulaması, sorgu yürütülürken, yerel bilgisayardaki çıktıyı bir dosyaya yönlendirerek ve sahip Sqlcmd çıkış sorgunun çalışması bittikten sonra:
sqlcmd -Q "SELECT * FROM AdventureWorks.Person.Contact" -o MyOutput.txt
Bir adlandırılmış örnek kullanarak bağlanma SQL Server Etkileşimli olarak çalışmak üzere kimlik doğrulaması Transact-SQL deyim ile Sqlcmd parola sorulmasını:
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
Not
Tarafından desteklenen seçeneklerin listesini görmek için Sqlcmd yardımcı programını çalıştırın: sqlcmd -?.
Katılımlı Transact-SQL deyimleri kullanarak sqlcmd çalıştırma
Kullanabileceğiniz Sqlcmd hizmet programı için etkileşimli yürütmek Transact-SQL bir komut istemi penceresinde ifade. Etkileşimli çalıştırmak için Transact-SQL kullanarak ifadeleri Sqlcmd kullanmadan yardımcı programı çalıştırmak,-Q, -q, -Z, or -i seçeneklerden herhangi birini belirtmek için dosyaları veya sorgu girin.Örneğin:
sqlcmd -S <ComputerName>\<InstanceName>
Komut girdi dosyası veya sorguları olmadan çalıştırılır Sqlcmd belirtilen örneğine bağlar.SQL Server ve yeni bir satır görüntüler bir 1> adlı yanıp sönen bir çizgiyle ardından Sqlcmd istemini.The 1 signifies that this is the first line of a Transact-SQL deyim, and the sqlcmd prompt is the point at which the Transact-SQL deyim will start when you type it in.
AT Sqlcmd komut isteminde iki yazabilirsiniz.Transact-SQL ifadeler ve Sqlcmd komutlarıGİT and Exit.Her Transact-SQL deyim deyim önbelleği olarak adlandırılan bir arabellekte konur. Bu ifadeler gönderilir SQL Server yazdıktan sonra GİT komut ve ENTER tuşuna basın.Çıkmak için Sqlcmd, type Exit or Quit yeni bir satır başındaki.
deyim önbelleğini temizlemek için , yazın... : SIFIRLA.Yazma ^ c causes Sqlcmd çıkmak için.^ c sonra deyim önbellek yürütülmesini durdurmak için de kullanılabilirGİT komut yayımlandı.
Transact-SQL Etkileşimli oturum içinde girilen deyimleri girerek düzenlenebilir : ed komut ve Sqlcmd istemini.Düzenleyici olacak olan açık ve düzenledikten sonra Transact-SQL deyim ve gözden geçirilmiş Düzenleyicisi'ni kapatma Transact-SQL deyim bir komut penceresinde görüntülenir. Enter GOto run therevised Transact-SQL statement.
Teklif edilen dizeler
Characters that are enclosed in quotation marks are used without any additional preprocessing, except that quotations marks can be inserted into a string by entering two consecutive quotation marks.SQL Server treats this character sequence as one quotation mark.(Ancak sunucu çevirisini oluşur.) Bir dize içinde görüntülendiklerinde değişkenleri komut dosyası kullanan kullanan dosyası kullanan genişletilecek değil.
Örneğin:
sqlcmd
PRINT "Length: 5"" 7'"
GO
Here is the result set.
Length: 5" 7'
Birden çok satır yayılma içeren dizeler
Sqlcmd , birden çok satıra yayılan dizeleri olan komut dosyalarını destekler.Örneğin, aşağıdaki SELECT deyim birden çok satıra yayılan, ancak yazdıktan sonra ENTER tuşuna bastığınızda yürütülen tek bir dize GO.
SELECT First line
FROM Second line
WHERE Third line
GO
Etkileşimli sqlcmd örneği
Gördüklerinizi çalıştırdığınızda, bir örnek Sqlcmd etkileşimli.
Bir komut istemi penceresini açtığınızda, benzer bir bir satır vardır:
C:\> _
Bu klasörü gösterir C:\ Geçerli klasör ve dosya adı belirtirseniz, Windows bu klasöre arayacaktır.
TYPE Sqlcmd varsayılan değere bağlamak için örnek SQL Server Yerel bilgisayar ve komut istemi istemini içeriği penceresini olacaktır:
C:\>sqlcmd
1> _
Bunun anlamı, bağlı örnek, SQL Server ve sqlcmd kabul etmek hazır Transact-SQL ifadeler ve sqlcmd Komutlar. Sonra yanıp sönen alt çizgi 1> olan sqlcmd komut isteminde, konumu, ifadeler ve komutlarını yazdığınız görüntülenecek işaretler. Şimdi yazın. USE AdventureWorks basın ENTER ve sonra yazın.GİT ve ENTER tuşuna basın.Komut istemi penceresinin içeriğini aşağıdaki gibi olacaktır:
sqlcmd
USE AdventureWorks;
GO
Here is the result set.
Changed database context to 'AdventureWorks'.
1> _
Girdikten sonra ENTER tuşuna basın USE AdventureWorks sinyal sqlcmd Yeni bir satır başlatmak için . Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks statement to the instance of SQL Server.sqlcmd then returned a message to indicate that the USE statement completed successfully and displayed a new 1> prompt as a signal to enter a new statement or command.
Aşağıdaki örnek komut istemi penceresinin içeriği, yazdığınız gösteren bir SELECT deyim, bir GO için yürütmek SELECTve EXIT çıkmak için sqlcmd:
sqlcmd
USE AdventureWorks;
GO
SELECT TOP (5) ContactID, FirstName, LastName
FROM Person.Contact;
GO
Here is the result set.
ContactID FirstName LastName
----------- -------------------------------------------------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
4 Humberto Acevedo
5 Pilar Ackerman
(5 rows affected)
1> EXIT
C:\>
Satırdan satırları 3> GO çıkışını olan bir SELECT deyim. Sonra çıktı oluşturur sqlcmd sıfırlar sqlcmd komut istemi'ni ve görüntüler 1>. Girildikten sonra EXIT satırında 1>, ilk açıldığında olduğu aynı satırda komut istemi penceresinde görüntüler. Bu gösterir sqlcmd kendi oturum çıkıldı. Yazarak, başka bir komut istemi penceresine şimdi kapat EXIT Command.
Transact-SQL komut dosyalarını kullanma sqlcmd çalıştırma
Kullanabileceğiniz Sqlcmd veritabanı komut dosyası dosyalarını çalıştırmak için.komut dosyası kullanan kullanan dosyalarını bir karışımını içeren metin dosyalarıdır Transact-SQL deyimleri Sqlcmd komutlarını ve komut dosyası kullanan kullanan dosyası kullanan değişkenleri.For more information about how to script variables, see komut dosyası kullanan kullanan dosyası kullanan değişkenleri ile sqlCmd kullanma.sqlcmd works with the statements, commands, and scripting variables in a script file in a manner similar to how it works with statements and commands that are entered interactively.Temel fark olan Sqlcmd , deyimleri, komutlarını ve komut dosyası kullanan kullanan dosyası kullanan değişkenleri girmek bir kullanıcı için bekleyen yerine pause olmadan giriş dosyası aracılığıyla okur.
veritabanı komut dosyası dosyalarını oluşturmak için farklı yolu vardır:
Etkileşimli olarak oluşturmak ve hata ayıklama bir küme, Transact-SQL deyimleri SQL Server Management Studiove içeriğini bir sorgu penceresi komut dosyası kaydedin.
Içeren bir metin dosyası oluşturabilirsiniz Transact-SQL Not Defteri gibi bir metin düzenleyicisi kullanarak deyimleri'ı tıklatın.
Örnekler
C.Sqlcmd kullanarak bir komut dosyası çalıştırma
Not Defteri'ni açın ve aşağıdakini yazın Transact-SQL ifadeler:
USE AdventureWorks;
GO
SELECT TOP (5) ContactID, FirstName, LastName
FROM Person.Contact;
GO
Adlı bir klasör oluşturun. MyFolder ve sonra komut dosyası olarak kaydedin. MyScript.sql klasörde C:\MyFolder. Aşağıdaki komut istemi dosyasını çalıştırmak ve çıktı koy komut istemi istemini girin MyOutput.txt içinde MyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Içeriğini görüntülediğinizde MyOutput.txt Not Defteri'nde, aşağıdaki görürsünüz:
Changed database context to 'AdventureWorks'.
ContactID FirstName LastName
----------- ----------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
4 Humberto Acevedo
5 Pilar Ackerman
(5 rows affected)
b.Ayrılmış bir yönetici bağlantı sqlCmd kullanma
Aşağıdaki örnekte sqlcmd Özel 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
Here is the result set.
spid blocked
------ -------
62 64
(1 rows affected)
Kullanımı sqlcmd durdurma işlemi sona erdirmek için .
1> KILL 64;
2> GO
c.Yürütmek için SQLCMD kullanarak bir saklı yordam
Aşağıdaki örnekte gösterildiği nasıl yürütmek kullanarak bir saklı yordam sqlcmd. Saklı yordamını oluşturun.
USE AdventureWorks;
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.Contact
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF
AT sqlcmd isteminde, aşağıdakileri 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. sqlcmd Veritabanı bakım için görev. Oluşturma C:\BackupTemplate.sql aşağıdaki kodla.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
AT sqlcmd isteminde, aşağıdakileri 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 örneği üzerinde kod çalıştırmasına sqlCmd kullanma
Aşağıdaki kod dosyasında iki örneği için birbirine bağlayan bir komut dosyası gösterir.Bildirim GO ikinci örnek bağlantı önce.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
e.XML çıktı döndürülüyor
Aşağıdaki örnek, nasıl XML çıktısı sürekli bir akış biçimlendirilmemiş, döndürülen gösterir.
C:\>sqlcmd -d AdventureWorks
1> :XML ON
1> SELECT TOP 4 FirstName + ' ' + LastName + ', '
2> FROM Person.Contact
3> GO
Gustavo Achong, Catherine Abel, Kim Abercrombie, Humberto Acevedo,
f.Windows komut dosyası sqlCmd kullanma
C SqlcmdÖrneğin, komutu sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, VBScript ile birlikte bir .bat dosyası çalıştırılabilir. In this case, do not use interactive options.sqlcmd must be installed on the computer that is executing the .bat file.
Ö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
Daha sonra komut istemi 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
See Also