SQLcmd yardımcı programını kullanma
The sqlcmd utility is a Microsoft Win32 command prompt utility for ad hoc, interactive execution of Transact-SQL statements and scripts and for automating Transact-SQL scripting tasks.Kullanmak için sqlcmd etkileşimli olarak veya kullanarak çalıştırmak için komut dosyaları oluşturmak için sqlcmd, kullanıcılar gerekir anlamak Transact-SQL.The sqlcmd utility is typically used in the following ways:
Kullanıcıların etkileşimli olarak girmek Transact-SQL deyimleri Komut istemi çalışmaya benzer bir şekildeSonuçlar, komut istemi görüntülenir.Bir komut istemi penceresi açmak için tıklatın Başlat,'ı Tüm Programlar, üzerine Donatılarve i komut istemi.komut istemi istemine sqlcmd istediğiniz seçenekleri listesini izler.Tarafından desteklenen seçeneklerin tam listesi için sqlcmd, bkz: sqlcmd Yardımcı Programı.
Kullanıcıların Gönder bir sqlcmd ya da tek bir belirterek iş Transact-SQL deyim yürütmek için veya yardımcı programını içeren bir metin dosyasına işaret eden Transact-SQL deyims yürütülecek.Çıktı, genellikle bir metin dosyasına yönlendirilir, ancak komut istemi isteminde de görüntülenebilir.
sqlcmd modu , SQL Server Management Studio sorgu Düzenleyicisi.
sql Server Management Objects (smo)
sql Server aracısı CmdExec işler.
Genellikle kullanılan sqlcmd seçenekleri
En sık kullanılan aşağıdaki seçenekleri:
The server option (-S) that identifies the instance of Microsoft SQL Server to which sqlcmd connects.
kimlik bilgileri doğrulama seçenekleri (-e, - u, ve -p) kimlik bilgileri bilgilerini belirtin, sqlcmd 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, ve -i) giriş için konumunu tanımlamak sqlcmd.
Çıktı seçeneği (-o) dosyası içinde belirleyen bir sqlcmd çıktısı koymaktır.
Sqlcmd yardımcı programını bağlanma
Aşağıda yaygın kullanımlarından, sqlcmd yardımcı programı:
Bağlanan bir varsayılan örnek etkileşimli olarak çalıştırmak için Windows kimlik doğrulaması kullanarak Transact-SQL deyimleri:
sqlcmd -S <ComputerName>
Not
Önceki örnekte, -e , varsayılan olduğundan belirtilen ve sqlcmd bağlandığı varsayılan örnek Windows kimlik doğrulaması kullanarak.
Bağlanan bir adlandırılmış örnek etkileşimli olarak çalıştırmak için Windows kimlik doğrulaması kullanarak Transact-SQL deyimleri:
sqlcmd -S <ComputerName>\<InstanceName>
veya
sqlcmd -S .\<InstanceName>
Bağlanan bir adlandırılmış ö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 yerel bilgisayarda Windows kimlik doğrulaması kullanarak, bir sorguyu yürüttükten ve sahip sqlcmd çalışan sorgunun çalışması bittikten sonra kalır:
sqlcmd -q "SELECT * FROM AdventureWorks2008R2.Person.Person"
Bağlanma varsayılan örnek kullanarak bir sorgu yürütülürken Windows kimlik doğrulaması yerel bilgisayardaki çıktıyı bir dosyaya suna ve sahip sqlcmd sorgunun çalışması bittikten sonra çıkmak:
sqlcmd -Q "SELECT * FROM AdventureWorks2008R2.Person.Person" -o MyOutput.txt
Bir adlandırılmış örnek kullanarak bağlanma SQL Server etkileşimli olarak çalıştırmak için kimlik doğrulama Transact-SQL deyimleri ile sqlcmd için bir parola istenmesini:
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 -?.
Transact-sql deyimlerinin etkileşimli kullanma sqlcmd çalıştıran
Kullanabileceğiniz sqlcmd için etkileşimli olarak yardımcı yürütmek Transact-SQL ifadeleri bir komut istemi penceresi.İçin etkileşimli olarak yürütmek Transact-SQL ifadeler kullanarak sqlcmd, yardımcı programı kullanmadan çalıştırmak -q, - q, -z, veya -i herhangi belirtmek için seçenekler giriş dosyaları veya sorgular.Örneğin:
sqlcmd -S <ComputerName>\<InstanceName>
Giriş dosyaları sorgular, isterse komut yürütüldüğünde sqlcmd belirtilen bağlayan örnek , SQL Server ve yeni bir çizgiyle görüntüler bir 1> alt adlı bir yanıp sönen çizgi izleyen sqlcmd istemi.The 1 signifies that this is the first line of a Transact-SQL statement, and the sqlcmd prompt is the point at which the Transact-SQL statement will start when you type it in.
En sqlcmd hem de yazın komut isteminde, Transact-SQL ifadeleri ve sqlcmd gibi komutlar Git ve Çıkış.Her Transact-SQL ifadesini koymak arabelleği adı verilen deyim önbellek.Bu ifadeler gönderilen SQL Server yazdıktan sonra go komutu ve enter tuşuna basın.Çıkmak için sqlcmd, type çıkmak veya ÇIK yeni bir satır başında.
deyim önbelleğini temizlemek için yazın : reset.Yazmaya ^ c neden sqlcmd çıkmak için.^ c sonra deyim önbellek yürütülmesini durdurmak için de kullanılabilir bir go komutu veren.
Transact-SQLbir etkileşimli girilen ifadeleri oturum girerek düzenlenen can : ed komutu ve sqlcmd istemi.Düzenleyici olacak açık ve düzenledikten sonra Transact-SQL deyim ve düzenleyici, düzenlenen kapanış Transact-SQL deyim görünür komut penceresini kapatın.Enter GO to run the revised Transact-SQL statement.
Teklif edilen dizeleri
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, çeviri server oluşuyor.) Bir dize içinde görüntülendiklerinde scripting değişkenleri genişletilmeyecek.
Örneğin:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Sonuç kümesi buradadır.
Length: 5" 7'
Birden çok satıra yayılamaz dizeleri
SQLCMD birden çok satıra yayılamaz dizeleri olan komut dosyalarını destekler.Örneğin, aşağıdaki SELECT deyim birden çok satıra yayılan, ancak enter tuşuna bastığınızda, tek bir dize yürütülen anahtar yazdıktan sonra GO.
SELECT First line
FROM Second line
WHERE Third line;
GO
Etkileşimli sqlcmd örneği
Bu çalıştırdığınızda gördüğünüz örnek, sqlcmd etkileşimli olarak.
Bir komut istemi penceresini açtığınızda, bir satır vardır benzer:
C:\> _
Bu klasörü anlamına gelir C:\ , geçerli klasördür ve, bir dosya adı belirttiğiniz Windows görüneceğini dosyayı bu klasöre.
Türü sqlcmd bağlanmak için varsayılan örnek , SQL Server yerel bilgisayar ve içeriğini bir komut istemi penceresi olacaktır:
C:\>sqlcmd
1> _
Bu, bağlandığınız anlamına gelir örnek , SQL Server ve sqlcmd olduğu artık kabul etmek hazır Transact-SQL ifadeleri ve sqlcmd komutları.Sonra yanıp sönen çizgi 1> olan sqlcmd , ifadeler ve yazdığınız komutları görüntülenir konum denk istemi.Şimdi, yazın use adventureworks2008r2 ve enter tuşuna basın ve sonra yazın go ve enter tuşuna basın.Komut İstemi penceresinin içeriğini aşağıdaki gibi olacaktır:
sqlcmd
USE AdventureWorks2008R2;
GO
Sonuç kümesi buradadır.
Changed database context to 'AdventureWorks2008R2'.
1> _
Girdikten sonra enter tuşuna basarak USE AdventureWorks2008R2 sinyal sqlcmd başlatılacak yeni bir satır.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2008R2 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 yazın, gösterir bir SELECT deyim, bir GO yürütmek için SELECTve bir EXIT çıkmak için sqlcmd:
sqlcmd
USE AdventureWorks2008R2;
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 çıktısı olan bir SELECT deyim.Çıktıyı üretmek sonra sqlcmd sıfırlar sqlcmd istemi ve görüntüler 1>.Girdikten sonra EXIT satır 1>, komut istemi penceresinde görüntüler olduğu zaman, ilk açtığınız it. aynı hattıBu gösterir sqlcmd çıkıldı, oturum.Şimdi başka yazarak komut istemi penceresini kapatabilirsiniz EXIT komut.
Transact-sql komut dosyaları tarafından kullanma sqlcmd çalıştıran
Kullanabileceğiniz sqlcmd yürütmek için veritabanı komut dosyası dosyaları.komut dosyası kullanan kullanan kullanan dosyalarını bir karışımını içeren metin dosyaları olan Transact-SQL ifadeleri, sqlcmd komutları ve komut dosyası kullanan kullanan kullanan dosyası değişkenleri.For more information about how to script variables, see SQLCMD Scripting değişkenleri ile 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.Ana fark olan sqlcmd ifadeleri, komutları ve komut dosyası kullanan kullanan kullanan dosyası değişkenleri girmek bir kullanıcı için bekleyen yerine duraklatma olmadan giriş dosyası aracılığıyla okur.
Oluşturmak için farklı bir yolla veritabanı komut dosyası dosyalar:
Etkileşimli yapı hata ayıklama ve bir küme , Transact-SQL ifadelerine SQL Server Management Studiove sonra sorgu penceresi içeriğini bir komut dosyası.
İçeren bir metin dosyası oluşturabilirsiniz Transact-SQL gibi bir metin düzenleyicisi kullanarak deyimleri. Not Defteri
Örnekler
A.Sqlcmd kullanarak bir komut dosyası çalıştırma
Not Defteri'ni başlatın ve aşağıdaki komutu yazın Transact-SQL deyimleri:
USE AdventureWorks2008R2;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Create a folder named MyFolder and then save the script as the file MyScript.sql in the folder C:\MyFolder.Çıkış koymak ve komut istemi dosyasını çalıştırmak için komut istemi istemine aşağıdakileri girin MyOutput.txt , MyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
İçeriğini görüntülediğinizde MyOutput.txt Not Defteri'nde, aşağıdakilere bakın:
Changed database context to 'AdventureWorks2008R2'.
BusinessEntityID FirstName LastName
---------------- ----------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B.Adanmış bir yönetici bağlantı ile SQLCMD kullanma
Aşağıdaki örnekte, sqlcmd adanmış 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)
Use sqlcmd sonlandırma engelleyici bir işlem.
1> KILL 64;
2> GO
C.Yürütmek için SQLCMD kullanarak birsaklı yordam
Aşağıdaki örnek, nasıl çalıştırılacağını gösterir bir saklı yordam kullanarak sqlcmd.Aşağıdaki saklı yordam oluşturun.
USE AdventureWorks2008R2;
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
En 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 için bir veritabanı bakım görev.Create C:\BackupTemplate.sql with the following code.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
En 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 yürütmek için SQLCMD kullanma
Aşağıdaki kodu bir dosyaya bağlayan iki örneği için bir komut dosyasını gösterir.Dikkat edin GO önce bağlantı için ikinci örnek.
: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ı kesintisiz bir akış olarak biçimlendirilmemiş, döndürülen gösterir.
C:\>sqlcmd -d AdventureWorks2008R2
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F.Windows komut dosyası SQLCMD kullanma
A sqlcmdcommand such as sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, can be executed in a .bat file together with VBScript.In this case, do not use interactive options.sqlcmd must be installed on the computer that is executing the .bat file.
İlk olarak, 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
Then, at the command prompt, run 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.İçin SQLCMD kullanarak küme sql açık Gök Mavisi veritabanını şifreleme
A sqlcmdbir bağlantı üzerinde yürütülen SQL Azure veri için belirttiğiniz şifreleme ve sertifika güven.İki sqlcmd Seçenekler şunlardır:
-n anahtarı şifrelenmiş bir bağlantı isteği için istemci tarafından kullanılır.This option is equivalent to the ADO.net option ENCRYPT = true.
–c anahtarı istemci tarafından dolaylı güven sunucuda yapılandırmak için kullanılan sertifika ve bunu doğrulayabilirsiniz.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.
The SQL Azure service does not support all the SET options available on a SQL Server instance.Aşağıdaki seçeneklerden bir hata atmasına, buna karşılık gelen SET seçenek küme için ON veya OFF:
SET ANSI_DEFAULTS
SET ANSI_NULLS
SET REMOTE_PROC_TRANSACTIONS
SET ANSI_NULL_DFLT_ON
Aşağıdaki set seçenekleri istisna atar, ancak kullanılamaz.Bunlar kaldırılmıştır:
SET CONCAT_NULL_YIELDS_NULL
SET ANSI_PADDING
SET QUERY_GOVERNOR_COST_LIMIT
Sözdizimi
Servis talepleri için aşağıdaki örneklere bakın nerede SQL Server yerel istemci sağlayıcısını ayarlar içerir: ForceProtocolEncryption = False, Trust Server Certificate = No
Windows kimlik bilgileri bilgilerini kullanarak bağlan ve iletişimi şifrelemek:
SQLCMD –E –N
Windows kimlik bilgileri ve güven sunucu kullanarak bağlan sertifika:
SQLCMD –E –C
Windows kimlik bilgileri bilgilerini kullanarak bağlan, iletişim ve güven sunucu şifreleme sertifika:
SQLCMD –E –N –C
Servis talepleri için aşağıdaki örneklere bakın nerede SQL Server yerel istemci sağlayıcısını ayarlar içerir: ForceProtocolEncryption = True, TrustServerCertificate = Yes.
Windows kimlik bilgileri bilgilerini kullanarak bağlan, iletişim ve güven sunucu şifreleme sertifika:
SQLCMD –E
Windows kimlik bilgileri bilgilerini kullanarak bağlan, iletişim ve güven sunucu şifreleme sertifika:
SQLCMD –E –N
Windows kimlik bilgileri bilgilerini kullanarak bağlan, iletişim ve güven sunucu şifreleme sertifika:
SQLCMD –E –T
Windows kimlik bilgileri bilgilerini kullanarak bağlan, iletişim ve güven sunucu şifreleme sertifika:
SQLCMD –E –N –C
Sağlayıcıyı belirtir, ForceProtocolEncryption = True sonra şifreleme etkin olsa bile, Encrypt=No bağlantı dize.