Aracılığıyla paylaş


komut dosyası kullanan kullanan dosyası kullanan değişkenleri ile sqlCmd kullanma

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

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

Bu konuda da örnekler cmd.exe komut istemi istemini kullanarak ortam değişkenleri tanımlama içerirküme.

Setvar komutu kullanılarak komut dosyası kullanan kullanan dosyası kullanan değişkenlerini ayarlama

The setvar command is used to define scripting variables.Kullanılarak tanımlanmış değişkenlerisetvar komut dahili olarak depolanır.komut dosyası kullanan kullanan istemi dosyası değişkenlerinin yok karıştı kullanarak komut dosyası kullanan kullanan istemi satırından tanımlanan ortam değişkenleri ileküme.Bir komut dosyası, başvuran bir ortam değişkeni olan veya olmayan olarak tanımlanan bir değişkensetvar, bir hata iletisi döndürülür ve komut dosyasını yürütmesini durdurma. olur Daha fazla bilgi için bkz:-b option in SQLCMD yardımcı programı.

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

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

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

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

  3. Kabuk komutu ( küme X = Y) sqlcmd başlatmadan önce komut istemi ayarlayın.

  4. sqlcmd-v X=Y

  5. : Setvar X Y

Not

Ortam değişkenlerini, içinde görüntülemek içinDenetim MasasıSistemaçın ve Gelişmiş sekmesini tıklatın.

Dolaylı olarak komut dosyası kullanan kullanan dosyası kullanan değişkenlerini ayarlama

BaşlattığınızdasqlCmdsqlcmd ilgili değişken olan seçeneği sqlcmd değişken dolaylı olarak seçenek. ile belirtilen değere küme Aşağıdaki örnekte,sqlcmdile başlatılan-l seçenek.Bu dolaylı olarak SQLLOGINTIMEOUT değişkenini ayarlar.

c:\> sqlcmd -l 60

Ayrıca-v var olan komut dosyası kullanan kullanan kullanan dosyası kullanan değişkeni içinde script. seçeneği Aşağıdaki komut dosyası kullanan kullanan dosyasında (dosya adı testscript.sql),ColumnNamekomut dosyası kullanan kullanan dosyası kullanan bir değişkeni.

USE AdventureWorks;

SELECT x.$(ColumnName)

FROM Person.Contact x

WHERE c.ContactID < 5;

Sonra adını belirtebileceğiniz sütun kullanarak verilen istediğiniz-vseçeneği:

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

Aynı komut dosyası kullanan kullanan dosyası kullanan kullanarak farklı bir sütuna döndürmek için değerini değiştirin:ColumnNamekomut dosyası kullanan kullanan dosyası kullanan değişkeni.

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

Değişken adları ve değerleri komut dosyası kullanan kullanan dosyası kullanan oluşturma yönergeleri

komut dosyası kullanan kullanan dosyası kullanan değişkenleri adı 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ı gerekir sahip bir değişken ifadesi olarak aynı form gibi$(var).

  • komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin büyük/küçük harfe duyarsızdır

    Not

    Atanan değer, birsqlCmd ortam değişkeni değişken kaldırılır.Kullanma: VarName setvarbir değer değişken. temizler

komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin değerleri belirlediğinizde aşağıdaki yönergeleri dikkate alın:

  • Değişken değerlerini kullanarak tanımlanansetvarveya -v seçeneği gerekir içine tırnak işaretleri değer boşluk içeriyorsa.

  • Tırnak işaretleri değişken değerinin bir parçası ise, bunlar öncesinde gerekir.Örnek: :setvar MyVar "spac""e".

Yönergeler için cmd.exe değişken değer ve adları küme

Değişkenleri kullanarak küme tanımlanan cmd.exe ortamının bir parçası olan ve başvuru tarafındansqlCmd.Aşağıdaki yönergeleri dikkate alın:

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

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

SQLCmd komut dosyası kullanan kullanan dosyası kullanan değişkenleri

Değişkenleri tarafından tanımlanmışsqlCmd değişkenler. komut dosyası kullanan kullanan dosyası kullanan olarak bilinen Aşağıdaki tabloda listelenmektedir.sqlCmd komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin.

Variable

İ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,: Bağlantı is used.

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

R/W gösteren değeri kullanılarak sıfırlanabilirsetvar komut ve diğer komutları kullanma yeni değeri.

Örnekler

C.Setvar komutu bir komut dosyası kullanma

Pek çoksqlCmd seçeneklerini bir komut dosyası setvar komut. kullanarak kontrol edilebilir Aşağıdaki örnekte, komut dosyası kullanan kullanan dosyası kullanantest.sqloluşturulduğuSQLCMDLOGINTIMEOUT değişkeni küme60saniye ve başka komut dosyası kullanan kullanan kullanan dosyası kullanan değişkeniserverolarak ayarlanırsa,testserver.Aşağıdaki kod içinde olduğutest.sql.

:setvar SQLCMDLOGINTIMEOUT 60

:setvar server "testserver"

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

USE AdventureWorks;

SELECT FirstName, LastName

FROM Person.Contact;

The script is then called by using sqlcmd:

sqlcmd -i c:\test.sql

B.Etkileşimli setvar komutunu kullanma

Aşağıdaki örnekte gösterildiği nasıl küme etkileşimli olarak kullanarak bir komut dosyası kullanan kullanan kullanan dosyası değişkenisetvarkomut dosyası kullanan kullanan kullanan.

sqlcmd

:setvar MYDATABASE AdventureWorks

USE $(MYDATABASE);

GO

Here is the result set.

Changed database context to 'AdventureWorks'

1>

C.Sqlcmd içinden komut istemi istemini ortam değişkenlerini kullanma

Aşağıdaki örnekte, dört ortam değişkenleriareküme ve ardından gelensqlcmd.

C:\>SET tablename=Person.Contact

C:\>SET col1=FirstName

C:\>SET col2=LastName

C:\>SET title=Ms.

C:\>sqlcmd -d AdventureWorks

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

2> FROM $(tablename)

3> WHERE Title ='$(title)'

4> GO

D.Kullanıcı - kullanma düzey sqlcmd içindeki ortam değişkenleri

Aşağıdaki örnekte kullanıcı-düzey ortam değişkeni%Temp%komut istemi istemine ayarlamak ve geçirilensqlcmdGiriş dosyası.Kullanıcı düzeyinde ortam değişkenini, elde etmeDenetim Masasısistemi' ni çift tıklatın.TıklatınÖncelikli sekmesini tıklatın ve sonra Ortam değişkenleri .

Aşağıdaki kodda olduğu giriş dosyasındac:\testscript.txt:

:OUT $(MyTempDirectory)

USE AdventureWorks;

SELECT FirstName

FROM AdventureWorks.Person.Contact

WHERE ContactID < 5;

Bu aşağıdaki kod, komut istemi satırına girilir:

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

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

Çıktı dosyası C:\Documents ve Settings\ aşağıdaki sonucu gönderilir<kullanıcı>\Local Settings\Temp\output.txt.

Changed database context to 'AdventureWorks'.

FirstName

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

Gustavo

Catherine

Kim

Humberto

(4 rows affected)

E.Başlangıç komut dosyası

AsqlCmd Başlangıç komut dosyası sqlcmd başlatıldığında yürütüldüğünde. Aşağıdaki örnek, ortam değişkenini ayarlarSQLCMDINI.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ılarıinit.sqlDosyasqlcmdbaşlatılan.

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

>1 Sqlcmd

Çıktı budur.

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

Not- X seçeneğini başlangıç komut dosyası özelliği. devre dışı bırakır

F.Değişkeni genişletmesini

Formda verilerle çalışma aşağıdaki örnekte gösterildiği birsqlCmd değişken.

USE AdventureWorks;

CREATE TABLE AdventureWorks.dbo.VariableTest

(

Col1 nvarchar(50)

);

GO

Bir satır olarak EkleCol1ofdbo.VariableTestdeğer içeren$(tablename).

INSERT INTO AdventureWorks.dbo.VariableTest(Col1)

VALUES('$(tablename)');

GO

Atsqlcmdkomut isteminde, hiçbir değişkeni eşit küme$(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

Here is the result set.

>1 Col1

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

>3 $(tablename)

>4

>5 (1 rows affected)

Belirtilen değişkenMyVarküme$(tablename).

>6 :setvar MyVar $(tablename)

Bu ifadeler satır döndürür ve de "'TabloAdı' komut dosyası kullanan kullanan dosyası kullanan değişkeni tanımlı değil." iletisi döndürür.

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

>7 GO

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

>2 GO

Bu ifadeler 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