Aracılığıyla paylaş


SQLCMD Scripting değişkenleri ile kullanma

komut dosyası kullanan kullanan kullanan dosyası değişkenleri komut dosyası kullanan kullanan kullanan dosyalarında kullanılan değişkenleri olarak adlandırılır.Komut dosyası değişkenleri birden fazla senaryolarda kullanılmak üzere bir komut dosyası sağlar.Örneğin, her sunucu için komut dosyası kullanan kullanan kullanan dosyasını değiştirmek yerine birden çok sunucuya karşı komut dosyası kullanan kullanan kullanan kullanan dosyası çalıştırmak istiyorsanız sunucu adı için komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni kullanabilirsiniz.Değiştirerek sunucu adı komut dosyası kullanan kullanan kullanan dosyası değişkeni için sağladığı, aynı kod farklı sunucularda yapılabilecek.

Scripting variables can be defined explicitly by using the setvar command, or implicitly by using the sqlcmd-v option.

Bu konuda da ortam değişkenleri Cmd.exe komut istemi istemini kullanarak tanımlama örnekler içerir set.

Komut dosyası değişkenleri setvar komutunu kullanarak ayarlama

The setvar command is used to define scripting variables.Kullanılarak tanımlanmış değişkenleri setvar komut dahili olarak saklanır.Komut dosyası değişkenleri karıştırılmaması gerekir komut istemi kullanılarak tanımlanmış ortam değişkenleri ile set.Bir komut dosyası kullanılarak tanımlanmış veya bir ortam değişkeni olmayan bir değişken başvuruyorsa setvarkomut dosyasının çalışmasını durdurur ve bir hata iletisi döndürülür.Daha fazla bilgi için bkz: -b 'de seçenek sqlcmd Yardımcı Programı.

Değişken öncelik (yüksek düşük)

Birden fazla değişken türü aynı ada sahipse, en yüksek önceliğe sahip bir değişkeni kullanılır.

  1. Sistem düzey ortam değişkenleri

  2. Kullanıcı düzey ortam değişkenleri

  3. komut istemi kabuğu (küme x = y) başlatmadan önce komut istemi isteminde küme sqlcmd

  4. sqlcmd-v X=Y

  5. : Setvar y x

Not

Ortam değişkenlerini görüntülemek için Denetim Masası, açık Sistemve i Gelişmiş sekmesi.

Komut dosyası değişkenleri örtülü olarak ayarlama

Başlattığınızda sqlcmd ile ilgili olan bir seçenek sqlcmd değişkeni, sqlcmd değişken küme örtülü olarak seçeneğini kullanarak belirtilen değere.Aşağıdaki örnekte, sqlcmd ile çalışmaya -l seçeneği.Örtülü olarak SQLLOGINTIMEOUT değişkenini ayarlar.

c:\> sqlcmd -l 60

Ayrıca - v seçenek küme komut dosyası kullanan kullanan kullanan kullanan dosyasında komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni.Aşağıdaki komut dosyası kullanan kullanan kullanan dosyasını (dosya adı testscript.sql), ColumnName komut dosyası kullanan kullanan kullanan dosyası bir değişkeni.

USE AdventureWorks2008R2;

SELECT x.$(ColumnName)

FROM Person.Person x

WHERE c.BusinessEntityID < 5;

Daha sonra adını belirtmek sütun kullanarak istediğiniz şekilde -v seçeneği:

sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql

Aynı komut dosyası kullanan kullanan kullanan dosyası kullanarak farklı bir sütun dönmek için değerini değiştirmek ColumnName komut dosyası kullanan kullanan kullanan dosyası değişkeni.

sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql

Değişken adları ve değerleri Scripting yönergeleri

komut dosyası kullanan kullanan kullanan dosyası değişkenleri adlandırdığınızda aşağıdaki yönergeleri dikkate alın:

  • Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.

  • Değişken adları aynı form bir değişken ifade olarak gibi olmamalıdır $(var).

  • Komut dosyası değişkenleri durum duyarsızdır

    Not

    Herhangi bir değer atanmışsa bir sqlcmd ortam değişkeni değişken kaldırılır.Kullanarak : setvar VarName olmayan bir değer değişkeni temizler.

komut dosyası kullanan kullanan kullanan dosyası değişkenleri için değerleri belirttiğinizde, aşağıdaki yönergeleri dikkate alın:

  • Kullanılarak tanımlanmış değişken değerlerini setvar veya - v seçeneği içine yerleştirilmesi gerekir tırnak işaretleri dize boşluk içeriyorsa.

  • Tırnak işaretleri değişken değerinin bir parçası iseniz, bunlar konulmalıdır.Örneğin: :setvar MyVar "spac""e".

Değişken değerlerini ve adları Cmd.exe yönergeleri ayarlayın

KÜMESİ kullanılarak tanımlanmış değişkenleri Cmd.exe ortamının parçası olan ve tarafından başvurulan sqlcmd.Aşağıdaki yönergeleri dikkate alın:

  • Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.

  • Değişken değerleri boşluklar veya tırnak işaretleri içerebilir.

SQLCMD Scripting değişkenleri

Tarafından tanımlanan değişkenleri sqlcmd komut dosyası kullanan kullanan kullanan dosyası değişkenleri bilinir.Aşağıdaki tablo listeleri sqlcmd değişkenleri komut dosyası kullanan kullanan kullanan dosyası.

Değişken

İlgili seçeneği

R/W

Default

SQLCMDUSER *

-U

R

""

SQLCMDPASSWORD *

-P

--

""

SQLCMDSERVER *

-S

R

"defaultlocalinstance"

SQLCMDWORKSTATION

-H

R

"Bilgisayaradı"

SQLCMDDBNAME

-d

R

""

SQLCMDLOGINTIMEOUT

-l

R/W

"8" (saniye)

SQLCMDSTATTIMEOUT

-t

R/W

"0" süresiz olarak bekleme =

SQLCMDHEADERS

-h

R/W

"0"

SQLCMDCOLSEP

-s

R/W

" "

SQLCMDCOLWIDTH

-w

R/W

"0"

SQLCMDPACKETSIZE

-a

R

"4096"

SQLCMDERRORLEVEL

-m

R/W

"0"

SQLCMDMAXVARTYPEWIDTH

-y

R/W

"256"

SQLCMDMAXFIXEDTYPEWIDTH

-Y

R/W

"0" = sınırsız

SQLCMDEDITOR

R/W

"edit.com"

SQLCMDINI

R

""

* sqlcmduser, sqlcmdpassword ve sqlcmdserver küme ne zaman : bağlanmak kullanılır.

R gösterir değeri yalnızca ayarlanabilir bir saat program başlatma sırasında.

R/w gösterir değeri kullanılarak sıfırlanabilir setvar komutu ve izleyen komutları yeni değerini kullanacaktır.

Örnekler

A.Bir komut dosyasında setvar komutunu kullanarak

Pek çok sqlcmd seçenekleri denetlenebilir bir komut dosyası kullanarak setvar komut.Aşağıdaki örnekte, komut dosyası kullanan kullanan kullanan dosyası test.sql oluşturulduğu SQLCMDLOGINTIMEOUT değişkeni küme 60 saniye ve başka komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni serverolarak ayarlanırsa, testserver.Aşağıdaki kodda bulunan test.sql.

:setvar SQLCMDLOGINTIMEOUT 60

:setvar server "testserver"

:connect $(server) -l $(SQLCMDLOGINTIMEOUT)

USE AdventureWorks2008R2;

SELECT FirstName, LastName

FROM Person.Person;

The script is then called by using sqlcmd:

sqlcmd -i c:\test.sql

B.Etkileşimli setvar komutunu kullanma

Aşağıdaki örnek komut dosyası kullanan kullanan kullanan dosyası bir değişkeni kullanarak etkileşimli olarak küme gösterilmiştir setvar komut dosyası kullanan kullanan kullanan.

sqlcmd

:setvar MYDATABASE AdventureWorks2008R2

USE $(MYDATABASE);

GO

Sonuç kümesi buradadır.

Changed database context to 'AdventureWorks2008R2'

1>

C.komut istemi isteminde sqlcmd içinde ortam değişkenlerini kullanma

Aşağıdaki örnekte, dört ortam değişkenleri are küme dan adı verilen ve sqlcmd.

C:\>SET tablename=Person.Person

C:\>SET col1=FirstName

C:\>SET col2=LastName

C:\>SET title=Ms.

C:\>sqlcmd -d AdventureWorks2008R2

1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name

2> FROM $(tablename)

3> WHERE Title ='$(title)'

4> GO

D.Kullanıcı düzey ortam değişkenlerini sqlcmd içinde kullanma

Aşağıdaki örnek kullanıcı düzey çevresel değişkeni içinde %Temp% olan küme için geçirilen ve komut istemi istemi komut istemi isteminde sqlcmd Giriş dosyası.Kullanıcı düzey ortam değişkeni içinde elde etmek için Denetim Masası, çift Sistem.' I öncelikli sekmesini ve sonra Ortam değişkenleri.

The following code is in the input file c:\testscript.txt:

:OUT $(MyTempDirectory)

USE AdventureWorks2008R2;

SELECT FirstName

FROM AdventureWorks2008R2.Person.Person

WHERE BusinessEntityID< 5;

Aşağıdaki kod bu komut istemi satırına girilir:

C:\ >SET MyTempDirectory=%Temp%\output.txt

C:\ >sqlcmd -i C:\testscript.txt

Aşağıdaki sonucu çıktı dosyası C:\Documents and Settings\ gönderilen<kullanıcı>\Local Settings\Temp\output.txt.

Changed database context to 'AdventureWorks2008R2'.

FirstName

--------------------------------------------------

Gustavo

Catherine

Kim

Humberto

(4 rows affected)

E.Başlangıç komut dosyası kullanma

A sqlcmd başlangıç komut dosyası yürütüldüğünde, sqlcmd başlatılır.Aşağıdaki örnek ortam değişkenini ayarlar SQLCMDINI.Bu içeriği init.sql.

SET NOCOUNT ON

GO

DECLARE @nt_username nvarchar(128)

SET @nt_username = (SELECT rtrim(convert(nvarchar(128), nt_username))

FROM sys.dm_exec_sessions WHERE spid = @@SPID)

SELECT @nt_username + ' is connected to ' +

rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('servername'))) +

' (' +

rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('productversion'))) +

')'

:setvar SQLCMDMAXFIXEDTYPEWIDTH 100

SET NOCOUNT OFF

GO

:setvar SQLCMDMAXFIXEDTYPEWIDTH

Bu çağrı init.sql dosyasının sqlcmd başlatılır.

C:\> SET sqlcmdini=c:\init.sql

>1 Sqlcmd

Bu çıkış alınır.

>1 < user > is connected to < server > (9.00.2047.00)

Not

The -X option disables the startup script feature.

F.Değişken genişletme

Aşağıdaki örnek verilerle çalışma biçiminde gösterir bir sqlcmd değişkeni.

USE AdventureWorks2008R2;

CREATE TABLE AdventureWorks2008R2.dbo.VariableTest

(

Col1 nvarchar(50)

);

GO

Bir satıra eklemek Col1 , dbo.VariableTest değeri içeren $(tablename).

INSERT INTO AdventureWorks2008R2.dbo.VariableTest(Col1)

VALUES('$(tablename)');

GO

En sqlcmd değişken olduğunda istemi küme eşit $(tablename), aşağıdaki ifadeleri iade satır.

C:\> sqlcmd

>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';

>2 GO

>3 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';

>4 GO

Sonuç kümesi buradadır.

>1 Col1

>2 ------------------

>3 $(tablename)

>4

>5 (1 rows affected)

Değişken verilen MyVar olarak küme $(tablename).

>6 :setvar MyVar $(tablename)

Bu deyimleri satır döndürür ve de '' tablename' iletisi döndürür değil tanımlanan komut dosyası kullanan kullanan kullanan dosyası değişkeni."

>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';

>7 GO

>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';

>2 GO

Bu deyimleri satır döndürür.

>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';

>2 GO

>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';

>2 GO