Sqlcmd Scripting değişkenleri ile kullanma

Komut dosyası değişkenleri komut dosyalarında kullanılan değişkenler denir. Komut dosyası değişkenleri birden fazla senaryolarda kullanılmak üzere bir komut dosyası sağlar. Örneğin her sunucu için komut dosyasını değiştirmek yerine, birden çok çalışma sunucularda bir komut çalıştırmak istiyorsanız sunucu adı için komut dosyası bir değişkeni kullanabilirsiniz. Komut dosyası değişkeni için sağlanan sunucu adını değiştirerek, farklı sunucularda aynı komut çalıştırılabilir.

Komut dosyası değişkenleri tanımlanabilir açıkça kullanarak setvarkomut veya dolaylı olarak kullanarak sqlcmd -vseçeneği.

Bu konuda da çevresel değişkenleri Cmd.exe komut isteminde kullanarak tanımlama örnekler içerir SET.

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

setvarKomutunu, komut dosyası değişkenleri tanımlamak için kullanılır. Kullanarak tanımlanan değişkenleri setvarkomutu dahili depolanır. Komut dosyası değişkenleri değil karıştı komut isteminde kullanarak tanımlanan ortam değişkenleri ile SET. Bir komut dosyası bir ortam değişkeni olmayan veya kullanarak tanımlı değişken başvuruyorsa setvar, bir hata iletisi döndürülür ve komut dosyası yürütülmesine durduracak. Daha fazla bilgi için bkz: -bseçeneği Sqlcmd yardımcı programı.

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

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

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

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

  3. Komut kabuğu (SET X=Y) başlatmadan önce komut isteminde setsqlcmd

  4. sqlcmd -vX = Y

  5. :SetvarX y

[!NOT]

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

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

Başlattığınızda sqlcmdsahip olan bir ilgili seçeneği ile sqlcmddeğişken sqlcmddeğişkeni ayarlanır örtülü seçeneğini kullanarak belirtilen değere. Aşağıdaki örnekte, sqlcmdile başlayan -l seçeneği. Bu örtülü olarak SQLLOGINTIMEOUT değişkenini ayarlar.

c:\> sqlcmd -l 60

Ayrıca -vkomut dosyası bir değişkeni bir JavaScript bulunmaktadır ayarlama seçeneği Aşağıdaki komut dosyasında (dosya adı testscript.sql), ColumnNamebir komut dosyası değişkeni.

USE AdventureWorks2012;

SELECT x.$(ColumnName)

FROM Person.Person x

WHERE c.BusinessEntityID < 5;

Sonra döndürülen kullanarak istediğiniz sütun adını belirtebilirsiniz -vseçeneği:

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

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

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

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

Komut 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ı değil olması gerekir gibi bir değişken ifade olarak aynı form gibi $(var).

  • Komut dosyası değişkenleri büyük/küçük harf duyarsızdır

    [!NOT]

    Herhangi bir değer atanmışsa bir sqlcmdortam değişkeni değişken kaldırıldı. Kullanarak :setvar VarName olmadan değişken değeri temizler.

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

  • Değişken değerlerini kullanarak tanımlanan setvar ya da -v seçeneği gerekir içine tırnak işaretleri dize boşluk içeriyorsa.

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

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

set kullanarak tanımlanan 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 sqlcmdkomut dosyası değişkenleri bilinen. Aşağıdaki tablo listeleri sqlcmdkomut dosyası değişkenleri.

Değişken

Ilgili seçeneği

R/W

Default

SQLCMDUSER *

-U

R

""

SQLCMDPASSWORD *

-P

--

""

SQLCMDSERVER NE *

-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 ne zaman ayarlanmış : Connect kullanılır.

R değeri yalnızca bir kez program başlatma sırasında ayarlanabileceğini gösterir.

R/w gösterir değeri kullanılarak sıfırlanabilir setvarkomutu ve izleyen komutları yeni değeri kullanacak.

Örnekler

A.Bir komut setvar komutunu kullanarak

Çok sqlcmdseçenekleri kontrollü bir komut dosyası kullanarak setvarkomut. Aşağıdaki örnekte, komut test.sqloluşturulduğu SQLCMDLOGINTIMEOUT değişkenini ayarlamak 60saniye ve başka bir komut dosyası değişkeni, server, ayarı testserver. Aşağıdaki kod test.sql.

:setvar SQLCMDLOGINTIMEOUT 60

:setvar server "testserver"

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

USE AdventureWorks2012;

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ı bir değişkeni kullanarak etkileşimli olarak ayarlama gösterilmiştir setvarkomut.

sqlcmd

:setvar MYDATABASE AdventureWorks2012

USE $(MYDATABASE);

GO

Sonuç kümesi buradadır.

Changed database context to 'AdventureWorks2012'

1>

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

Aşağıdaki örnekte, dört ortam değişkenleri areayarlayın ve ardından gelen denilen sqlcmd.

C:\>SET tablename=Person.Person

C:\>SET col1=FirstName

C:\>SET col2=LastName

C:\>SET title=Ms.

C:\>sqlcmd -d AdventureWorks2012

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

2> FROM $(tablename)

3> WHERE Title ='$(title)'

4> GO

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

Aşağıdaki örnek kullanıcı düzeyinde çevre değişken %Temp%set at the command prompt ve geçirilen sqlcmdgiriş dosyası. Kullanıcı düzeyi ortam değişkeni içinde elde etmek için Denetim Masası, çift System. Tıklayın önceden sekmesini tıklatıp ardından Ortam değişkenleri.

Girdi dosyasında aşağıdaki kodu olduğunu c:\testscript.txt:

:OUT $(MyTempDirectory)

USE AdventureWorks2012;

SELECT FirstName

FROM AdventureWorks2012.Person.Person

WHERE BusinessEntityID < 5;

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

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

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

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

Changed database context to 'AdventureWorks2012'.

FirstName

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

Gustavo

Catherine

Kim

Humberto

(4 rows affected)

E.Başlangıç komut dosyası kullanma

A sqlcmdbaşlangıç komut yürütüldüğünde ne zaman sqlcmdbaşlatılır. Aşağıdaki örnek, ortam değişkeni ayarlar SQLCMDINI. İçeriği budurinit.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.sqlne zaman dosya sqlcmdbaşlatılır.

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

>1 Sqlcmd

Bu, Stardoll'da çıktı.

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

[!NOT]

-XSeçeneğini başlangıç komut dosyası özelliğini devre dışı bırakır.

F.Değişken genişletme

Aşağıdaki örnek verileri ile çalışma şeklinde gösteren bir sqlcmddeğişkeni.

USE AdventureWorks2012;

CREATE TABLE AdventureWorks2012.dbo.VariableTest

(

Col1 nvarchar(50)

);

GO

Bir satır içine Col1, dbo.VariableTestdeğeri içeren $(tablename).

INSERT INTO AdventureWorks2012.dbo.VariableTest(Col1)

VALUES('$(tablename)');

GO

sqlcmdDeğişken değerine ayarlandığında istemi, $(tablename), aşağıdaki deyimleri satır döndürü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 MyVarayarı $(tablename).

>6 :setvar MyVar $(tablename)

Bu deyimleri satır döndürür ve ayrıca '' tablename' iletisi döndürür komut dosyası değişkeni. tanımlanmadı"

>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

Ayrıca bkz.

Başvuru

Sqlcmd yardımcı programı

Kavramlar

Sqlcmd yardımcı programını kullanın

Komut istemi yardımcı programı başvurusu (veritabanı altyapısı)