Polecenie sqlcmd przy użyciu skryptów zmiennych

Zmienne wykonywanie skryptów nazywane są zmienne, które są używane w skryptach.Zmienne skryptów włączenie jednego skryptu ma być używany w wielu scenariuszach.Na przykład jeśli chcesz uruchomić skrypt przeciwko wielu serwerów, zamiast modyfikować wykonywanie skryptów dla każdego serwera można użyć zmiennej wykonywanie skryptów dla nazwa serwera.Zmieniając nazwa serwera dostarczony do zmiennej wykonywanie skryptów, ten sam skrypt może być wykonywany na różnych serwerach.

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

Ten temat zawiera również przykłady Definiowanie zmiennych środowiskowych w wiersz polecenia programu Cmd.exe przy użyciu USTAWIĆ.

Ustawienie skryptów zmiennych za pomocą polecenia setvar

Setvar polecenie jest używane do definiowania zmiennych wykonywanie skryptów.Zmienne zdefiniowane za pomocą setvar polecenia są przechowywane wewnętrznie.Zmienne skryptów nie należy mylić z zmiennych środowiskowych, które są zdefiniowane w wiersz polecenia za pomocą USTAWIĆ.Jeżeli skrypt odwołuje się do zmiennej, która nie jest zmienną środowiskową lub nie jest zdefiniowany za pomocą setvar, zwracany jest komunikat o błędzie i zatrzyma wykonywanie skryptu.Aby uzyskać więcej informacji, zobacz -b opcji w Narzędzie sqlcmd.

Pierwszeństwo zmiennej (niska wysoki)

Jeśli więcej niż jeden typ zmiennej ma taką samą nazwę, używana jest zmienna o najwyższym priorytecie.

  1. Systemowe zmienne środowiskowe poziom

  2. Poziom zmienne środowiskowe użytkownika

  3. Polecenia powłoki (Zestaw X = Y) ustawiona w wiersz polecenia przed rozpoczęciem polecenie sqlcmd

  4. sqlcmd-v X=Y

  5. : Setvar X Y

Ostrzeżenie

Aby wyświetlić zmienne środowiskowe w Panelu sterowania, otwórz systemu, a następnie kliknij przycisk Zaawansowane kartę.

Niejawnie ustawiania zmiennych skryptów

Po uruchomieniu polecenie sqlcmd z opcji, która ma pokrewnych polecenie sqlcmd zmiennej, polecenie sqlcmd jest zmienna zestaw niejawnie na wartość określona za pomocą opcji.W poniższym przykładzie sqlcmd pracę z -l opcji.To niejawnie ustawia zmienną SQLLOGINTIMEOUT.

c:\> sqlcmd -l 60

Można również użyć - v opcji zestaw wykonywanie skryptów zmiennej, która istnieje w skrypcie.W poniższym skrypcie (nazwa pliku jest testscript.sql), ColumnName jest zmienna wykonywanie skryptów.

USE AdventureWorks2008R2;

SELECT x.$(ColumnName)

FROM Person.Person x

WHERE c.BusinessEntityID < 5;

Następnie można określić nazwę kolumna, która ma zwracane przy użyciu -v opcji:

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

Aby powrócić innej kolumna przy użyciu tej samej skryptu, zmień wartość ColumnName wykonywanie skryptów zmiennej.

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

Wytyczne dotyczące skryptów nazwy zmiennej i wartości

Nazwa zmiennych wykonywanie skryptów, należy wziąć pod uwagę następujące wskazówki:

  • Nazwy zmiennych nie może zawierać spacji lub znaków cudzysłowu.

  • Nazwy zmiennych muszą być tego samego formularza jako zmiennej wyrażenie, takich jak $(var).

  • Zmienne skryptów są przypadek-niewrażliwe

    Ostrzeżenie

    Jeśli wartość nie jest przypisany do polecenie sqlcmd zmiennej środowiskowej, zmienna jest usuwany.Za pomocą : setvar VarName bez wartości czyści zmiennej.

Podczas określania wartości zmiennych wykonywanie skryptów, należy wziąć pod uwagę następujące wskazówki:

  • Wartości zmiennych, które są zdefiniowane za pomocą setvar lub - v opcja musi być ujęta w cudzysłów, jeśli wartość ciąg zawiera spacje.

  • Jeśli znaki cudzysłowu są częścią wartości zmiennej, musi być wyjściowym.Na przykład: :setvar MyVar "spac""e".

Wytyczne dla programu Cmd.exe USTAWIĆ nazwy i wartości zmiennych

Zmienne zdefiniowane przy użyciu zestawu są częścią środowisko programu Cmd.exe i mogą odwoływać się polecenie sqlcmd.Należy wziąć pod uwagę następujące wskazówki:

  • Nazwy zmiennych nie może zawierać spacji lub znaków cudzysłowu.

  • Wartości zmiennych mogą zawierać spacji ani znaków cudzysłowu.

polecenie SQLCMD skryptów zmiennych

Zmienne zdefiniowane przez polecenie sqlcmd są znane jako zmienne wykonywanie skryptów.List tabela następujący polecenie sqlcmd wykonywanie skryptów zmiennych.

Variable

Opcja pokrewne

ODCZYT I ZAPIS

Default

SQLCMDUSER *

-U

R

""

SQLCMDPASSWORD *

-P

--

""

SQLCMDSERVER *

-S

R

"defaultlocalinstance"

SQLCMDWORKSTATION

-H

R

"Nazwa_komputera"

SQLCMDDBNAME

-d

R

""

SQLCMDLOGINTIMEOUT

-l

ODCZYT I ZAPIS

"8" (w sekundach)

SQLCMDSTATTIMEOUT

-t

ODCZYT I ZAPIS

"0" = oczekiwania przez czas nieokreślony

SQLCMDHEADERS

-h

ODCZYT I ZAPIS

"0"

SQLCMDCOLSEP

-s

ODCZYT I ZAPIS

" "

SQLCMDCOLWIDTH

-w

ODCZYT I ZAPIS

"0"

SQLCMDPACKETSIZE

-

R

"4096"

SQLCMDERRORLEVEL

-m

ODCZYT I ZAPIS

"0"

SQLCMDMAXVARTYPEWIDTH

-y

ODCZYT I ZAPIS

"256"

SQLCMDMAXFIXEDTYPEWIDTH

-Y

ODCZYT I ZAPIS

"0" = nieograniczony

SQLCMDEDITOR

ODCZYT I ZAPIS

"edit.com"

SQLCMDINI

R

""

* SQLCMDUSER, SQLCMDPASSWORD i SQLCMDSERVER są zestaw po : łączenie jest używana.

R wskazuje wartość zestaw tylko jedną czas podczas inicjowania programu.

Odczyt i zapis wskazuje, że wartość można resetować przy użyciu setvar polecenia i kolejnych poleceń będzie używać nowej wartości.

Przykłady

A.Za pomocą polecenia setvar w skrypcie

Wiele polecenie sqlcmd opcji może być kontrolowane za pomocą skryptu setvar polecenia.W poniższym przykładzie skryptu test.sql jest tworzony w którym SQLCMDLOGINTIMEOUT jest zmienna zestaw do 60 sekund i innej zmiennej wykonywanie skryptów server, jest zestaw do testserver.Poniższy kod jest w 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.Interaktywnie za pomocą polecenia setvar

W poniższym przykładzie jak zestaw wykonywanie skryptów zmiennej interakcyjnie, za pomocą setvar polecenia.

sqlcmd

:setvar MYDATABASE AdventureWorks2008R2

USE $(MYDATABASE);

GO

Oto zestaw wyników.

Changed database context to 'AdventureWorks2008R2'

1>

C.Za pomocą wiersz polecenia zmiennych środowiskowych w ramach polecenie sqlcmd

W poniższym przykładzie czterech zmiennych środowiskowych are zestaw i następnie wywoływana z 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.Za pomocą zmiennych środowiskowych użytkownika poziom w obrębie polecenie sqlcmd

W następującym przykładzie poziom użytkownika zmiennej środowiskowej %Temp% jest zestaw w wiersz polecenia i przekazany do sqlcmd pliku wejściowego.Uzyskanie zmiennej środowiskowej poziom użytkownika w Panelu sterowania, kliknij dwukrotnie System.Kliknij zaliczki kartę, a następnie kliknij Zmienne środowiskowe.

Poniższy kod jest w pliku wejściowym c:\testscript.txt:

:OUT $(MyTempDirectory)

USE AdventureWorks2008R2;

SELECT FirstName

FROM AdventureWorks2008R2.Person.Person

WHERE BusinessEntityID< 5;

Następujący kod jest wprowadzana w wiersz polecenia:

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

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

Następujące wyniki są wysyłane do pliku wyjściowego C:\Documents and Settings\<użytkownika>\Local Settings\Temp\output.txt.

Changed database context to 'AdventureWorks2008R2'.

FirstName

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

Gustavo

Catherine

Kim

Humberto

(4 rows affected)

E.Używanie skryptu uruchamiania

A polecenie sqlcmd jest wykonywany skrypt uruchamiania podczas polecenie sqlcmd jest uruchomiona.Poniższy przykład ustawia zmienną środowiskową SQLCMDINI.Jest to zawartość 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

Wywołuje to init.sql pliku, kiedy sqlcmd jest uruchomiona.

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

>1 Sqlcmd

Jest to wynik.

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

Ostrzeżenie

-X opcja wyłącza funkcję skrypt uruchamiania.

F.Rozwijanie zmiennych

W poniższym przykładzie pokazano pracy z danymi w postaci polecenie sqlcmd zmiennej.

USE AdventureWorks2008R2;

CREATE TABLE AdventureWorks2008R2.dbo.VariableTest

(

Col1 nvarchar(50)

);

GO

Wstawić jeden wiersz do Col1 z dbo.VariableTest zawiera wartość $(tablename).

INSERT INTO AdventureWorks2008R2.dbo.VariableTest(Col1)

VALUES('$(tablename)');

GO

W sqlcmd wiersza, gdy zmienna nie jest zestaw równa $(tablename), poniższe instrukcje zwrotu wiersza.

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

Oto zestaw wyników.

>1 Col1

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

>3 $(tablename)

>4

>5 (1 rows affected)

Biorąc pod uwagę zmienną MyVar jest zestaw do $(tablename).

>6 :setvar MyVar $(tablename)

Instrukcje te zwracają wiersza i również zwrócić komunikat "[NULL]"nazwa_tabeli wykonywanie skryptów nie zdefiniowana zmienna"

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

>7 GO

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

>2 GO

Instrukcje te zwracają wiersza.

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

>2 GO

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

>2 GO