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

Sqlcmd yardımcı programı

Kavramlar

Sqlcmd Scripting değişkenleri ile kullanma

sqlcmd komut dosyaları sorgu Düzenleyicisi ile düzenleme

Iş adımları yönetmek

CmdExec iş adım oluşturun