Using sqlcmd with Scripting Variables

Zmienne, które są używane w skryptach są określane jako zmienne wykonywanie wykonywanie skryptów.Zmienne wykonywanie wykonywanie skryptów włączenie jednego skryptu ma być używany w wielu scenariuszach.Na przykład jeśli chcesz uruchomić jednego skryptu dla wielu serwerów, zamiast modyfikować skrypt dla każdego serwera, można użyć zmiennej wykonywanie wykonywanie skryptów nazwa serwera.Zmieniając nazwa serwera do zmiennej wykonywanie 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 definiowania zmiennych środowiskowych w wiersz polecenia programu Cmd.exe przy użyciu ZESTAW.

Ustawienie wykonywanie wykonywanie skryptów zmienne przy użyciu polecenia setvar

The setvar command is used to define wykonywanie skryptów variables.Zmienne, które są zdefiniowane za pomocą setvar polecenia są przechowywane wewnętrznie.wykonywanie wykonywanie skryptów zmiennych, nie należy mylić z zmiennych środowiskowych, które są zdefiniowane w wiersz polecenia przy użyciu ZESTAW.Jeśli skrypt odwołuje się do zmiennej, która nie jest zmienną środowiskową lub nie jest zdefiniowane przy użyciu setvar, zwracany jest komunikat o błędzie i zatrzyma wykonanie skryptu.Aby uzyskać więcej informacji, zobacz temat -b opcjisqlcmd Utility.

Pierwszeństwo zmiennej (niski wysoki)

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

  1. Poziom zmiennych środowiskowych systemu

  2. Poziom zmienne środowiskowe użytkownika

  3. Polecenie shell)ZESTAW X = Y) ustawiona w wiersz polecenia przed rozpoczęciem SQLCMD

  4. sqlcmd-v X=Y

  5. : Setvar X Y

Uwaga

Aby wyświetlić zmiennych środowiskowych Panel sterowania, open System, a następnie kliknij przycisk Zaawansowane tab.

Ustawianie niejawnie zmienne wykonywanie wykonywanie skryptów

Podczas uruchamiania SQLCMD z opcja, która ma pokrewnych SQLCMD zmiennejSQLCMD zmienna jest zestaw niejawnie na wartość, która jest określona przy użyciu opcji.W poniższym przykładzie sqlcmd zostanie uruchomiony przy użyciu -l Opcja. To ustawia domyślnie zmienną SQLLOGINTIMEOUT.

c:\> sqlcmd -l 60

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

USE AdventureWorks;

SELECT x.$(ColumnName)

FROM Person.Contact x

WHERE c.ContactID < 5;

Następnie można określić nazwę kolumna, która ma zostać zwrócone za pomocą -v Opcja:

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

Aby przywrócić innej kolumna, wykorzystując ten sam skrypt, zmień wartość ColumnName Zmienna wykonywanie wykonywanie skryptów.

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

Wskazówki dotyczące tworzenia wykonywanie wykonywanie skryptów nazwy zmiennej i wartości

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

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

  • W nazwach zmiennych nie mogą mieć tego samego formularza jako wyrażenie zmiennych, takich jak $(var).

  • Zmienne wykonywanie wykonywanie skryptów jest rozróżniana wielkość liter

    Uwaga

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

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

  • Wartości zmiennych, które są zdefiniowane za pomocą setvar or the -v opcji muszą być ujęte w cudzysłowy, jeśli wartości ciąg zawiera spacje.

  • Jeśli wartość zmiennej zawiera znaki cudzysłowu, należy poprzedzić je znakiem kontrolnym.Na przykład setvar MyVar "spac""e".

Wskazówki dotyczące programu Cmd.exe zestaw nazwy i wartości zmiennej

Zmienne, które są zdefiniowane za pomocą zestaw są częścią środowisko programu Cmd.exe i mogą odwoływać się SQLCMD.Należy wziąć pod uwagę następujące wskazówki:

  • W nazwach zmiennych nie może zawierać znaków cudzysłowu charactersor odstępu.

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

Zmienne wykonywanie wykonywanie skryptów SQLCMD

Zmienne, które są definiowane przez SQLCMD są znane jako zmienne wykonywanie wykonywanie skryptów.Następująca tabela zawiera listę SQLCMD wykonywanie wykonywanie skryptów zmiennych.

Variable

Opcja pokrewne

R/W

Default

SQLCMDUSER *

-U

R

""

SQLCMDPASSWORD *

-P

--

""

SQLCMDSERVER *

-S

R

"DefaultLocalInstance"

SQLCMDWORKSTATION

-H

R

"Nazwa_komputera"

SQLCMDDBNAME

-d

R

""

SQLCMDLOGINTIMEOUT

-l

R/W

"8" (w sekundach)

SQLCMDSTATTIMEOUT

-t

R/W

"0" = oczekiwanie przez nieograniczony czas

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" = nieograniczony

SQLCMDEDITOR

R/W

"edit.com"

SQLCMDINI

R

""

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

R wskazuje wartość zestaw tylko jeden raz podczas inicjowania programu.

Odczyt/Zapis wskazuje, że wartość można resetować przy użyciu setvar polecenie i kolejne polecenia użyje nową wartość.

Przykłady

A.Za pomocą polecenia setvar w skrypcie

Wiele SQLCMD opcji może być kontrolowane w skrypcie używając setvar polecenia.W poniższym przykładzie skryptu test.sql w którym zostanie utworzona SQLCMDLOGINTIMEOUT Zmienna jest zestaw do 60 sekund, a innej zmiennej wykonywanie wykonywanie skryptów, server, jest zestaw do testserver. Następujący kod znajduje się w test.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.Za pomocą polecenia setvar interakcyjne

W poniższym przykładzie jak zestaw wykonywanie wykonywanie skryptów zmiennej interaktywnie przy użyciu setvar polecenie.

sqlcmd

:setvar MYDATABASE AdventureWorks

USE $(MYDATABASE);

GO

Here is the result set.

Changed database context to 'AdventureWorks'

1>

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

W poniższym przykładzie czterech zmiennych środowiskowych are zestaw i następnie wywoływana z sqlcmd.

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.Wykorzystywanie zmiennych środowiskowych poziom użytkownika w ramach sqlcmd

W poniższym przykładzie zmiennych środowiskowych poziom użytkownika %Temp% jest zestaw w wiersz polecenia i przekazany do sqlcmd Plik wejściowy. Aby uzyskać w zmiennej środowiskowej poziom użytkownika, Panel sterowania, kliknij dwukrotnie System.Kliknij przycisk Zaliczki karcie, a następnie kliknij przycisk Zmienne środowiskowe.

Następujący kod znajduje się w pliku wejściowego. c:\testscript.txt:

:OUT $(MyTempDirectory)

USE AdventureWorks;

SELECT FirstName

FROM AdventureWorks.Person.Contact

WHERE ContactID < 5;

Następujący kod jest wprowadzony 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żytkownik>\Local Settings\Temp\output.txt.

Changed database context to 'AdventureWorks'.

FirstName

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

Gustavo

Catherine

Kim

Humberto

(4 rows affected)

E.Używanie skryptu uruchamiania

A SQLCMD uruchamiania skrypt jest wykonywany po SQLCMD jest uruchomiona.W poniższym przykładzie ustawiany jest zmienna środowiskowa 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

Wymaga to init.sql Kiedy plik sqlcmd jest uruchomiona.

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

>1 Sqlcmd

Są to dane wyjściowe.

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

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

F.Rozszerzanie zmiennych

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

USE AdventureWorks;

CREATE TABLE AdventureWorks.dbo.VariableTest

(

Col1 nvarchar(50)

);

GO

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

INSERT INTO AdventureWorks.dbo.VariableTest(Col1)

VALUES('$(tablename)');

GO

Na sqlcmd monit, jeśli zmienna nie jest zestaw równa $(tablename), poniższe instrukcje zwrotu w wierszu.

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)

Biorąc pod uwagę zmiennej MyVar jest ustawiona na $(tablename).

>6 :setvar MyVar $(tablename)

Instrukcje te zwracają wiersza i również zwracać komunikatu „ "nazwa_tabeli" wykonywanie wykonywanie skryptów, zmienna nie jest zdefiniowana. „

>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ą w wierszu.

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

>2 GO

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

>2 GO