Share via


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.