Aracılığıyla paylaş


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