Размер
sqlcmd — использование с переменными скрипта
Play

sqlcmd — использование с переменными скрипта

Переменные, которые используются в скриптах, называются переменными скрипта. Переменные скрипта позволяют использовать один скрипт в различных обстоятельствах. Например, если нужно выполнить один скрипт на нескольких серверах, вместо изменения скрипта для каждого сервера можно указать для имени сервера соответствующую переменную скрипта. Изменяя имя сервера, указываемое в переменной скрипта, можно выполнять один и тот же скрипт на разных серверах.

Переменные сценариев можно определить явно с помощью команды setvar или неявно с помощью параметра sqlcmd-v.

Кроме того, этот раздел содержит примеры определения переменных среды в командной строке Cmd.exe с помощью инструкции SET.

Настройка переменных скрипта с помощью команды setvar

Команда setvar используется для определения переменных сценария. Переменные, определенные с помощью команды setvar , предназначены для внутреннего хранения. Переменные сценария не следует путать с переменными среды, которые определяются в командной строке с помощью инструкции SET. Если сценарий ссылается на переменную, которая не является переменной среды или не определена с помощью команды setvar, то возвращается сообщение об ошибке, и выполнение сценария останавливается. Дополнительные сведения см. в разделе о параметре -b статьи Служебная программа sqlcmd.

Приоритет переменных (от низкого к высокому)

Если несколько переменных имеют одинаковое имя, то используется переменная с более высоким приоритетом.

Системные переменные среды.

Пользовательские переменные среды.

Командная оболочка (SET X=Y), заданная в командной строке перед запуском sqlcmd

sqlcmd -v X=Y

:Setvar X Y

Чтобы просмотреть переменные среды, на панели управления откройте компонент Система и перейдите на вкладку Дополнительно .

Неявное задание переменных скрипта

При запуске программы sqlcmd с параметром, с которым связана переменная sqlcmd , переменной sqlcmd неявно присваивается значение, заданное для этого параметра. В следующем примере программа sqlcmd запускается с параметром -l . Этим неявно определяется переменная SQLLOGINTIMEOUT.

Кроме того, переменные сценария, которые в нем содержатся, задаются с помощью параметра -v . В следующем скрипте (имя файла testscript.sql ) ColumnName является переменной скрипта.

Кроме того, с помощью параметра -v можно указать имя возвращаемого столбца:

Чтобы возвратить другой столбец с помощью того же скрипта, измените значение переменной скрипта ColumnName .

Правила выбора имен и значений переменных скрипта

Присваивая имена переменным скрипта, необходимо придерживаться следующих правил.

Имена переменных не должны содержать символов пробела и кавычек.

Имена переменных не должны иметь такую же форму, как у выражений переменных $(var) .

В переменных скрипта регистр не учитывается.

Если переменной среды sqlcmd не присвоено никакое значение, то она удаляется. При использовании :setvar VarName без значения переменная очищается.

Присваивая значения переменным скрипта, необходимо придерживаться следующих правил.

Переменную, заданную с помощью параметра setvar или -v , необходимо заключать в кавычки, если строковое значение содержит пробелы.

Если кавычки — часть значения переменной, то их необходимо экранировать. Например, setvar MyVar "spac""e" .

Правила присваивания значений и имен переменным с помощью команды Cmd.exe SET

Переменные, заданные с помощью инструкции SET, являются частью среды Cmd.exe, и на них может ссылаться программа sqlcmd. Ознакомьтесь со следующими рекомендациями:

Имена переменных не должны содержать символов пробела и кавычек.

Значения переменных могут содержать символы пробела и кавычки.

Переменные скрипта sqlcmd

Переменные, которые определяются программой sqlcmd , называются переменными сценария. В следующей таблице приведен список переменных сценария программы sqlcmd .

Переменная Связанный параметр Чтение-запись По умолчанию SQLCMDUSER* -U R "" SQLCMDPASSWORD* -P -- "" SQLCMDSERVER* -S R "DefaultLocalInstance" SQLCMDWORKSTATION -H R "ComputerName" SQLCMDDBNAME -d R "" SQLCMDLOGINTIMEOUT -l Чтение-запись "8" (секунд) SQLCMDSTATTIMEOUT -T Чтение-запись "0" = неограниченное время ожидания SQLCMDHEADERS -H Чтение-запись "0" SQLCMDCOLSEP -S Чтение-запись " " SQLCMDCOLWIDTH -w Чтение-запись "0" SQLCMDPACKETSIZE -a R "4096" SQLCMDERRORLEVEL -M Чтение-запись "0" SQLCMDMAXVARTYPEWIDTH -y Чтение-запись «256» SQLCMDMAXFIXEDTYPEWIDTH -y Чтение-запись "0" = неограниченное время ожидания SQLCMDEDITOR Чтение-запись "edit.com" SQLCMDINI R ""

Значения переменных SQLCMDUSER, SQLCMDPASSWORD и SQLCMDSERVER задаются при использовании команды :Connect .

Пометка «Чтение» означает, что значение может быть задано только один раз в процессе инициализации программы.

Пометка "Чтение и запись" означает, что переменная может быть изменена командой setvar , и все последующие команды будут использовать новое значение.

Примеры

A. Использование команды setvar в скрипте

Команда setvar позволяет управлять многими параметрами программы sqlcmd в сценарии. В следующем примере создается скрипт test.sql , в котором переменной SQLCMDLOGINTIMEOUT присваивается значение 60 , а другой переменной скрипта, server , присваивается значение testserver . Следующий код входит в скрипт test.sql .

Затем скрипт вызывается с помощью sqlcmd:

Б. Интерактивное использование команды setvar

В следующем примере показана интерактивная установка переменной сценария с помощью команды setvar .

В. Использование переменных среды командной строки в программе sqlcmd

В следующем примере устанавливаются четыре переменные среды are , которые затем вызываются из sqlcmd .

Г. Использование переменных среды уровня пользователя в программе sqlcmd

В следующем примере пользовательская переменная среды %Temp% устанавливается в командной строке и передается входному файлу sqlcmd . Чтобы просмотреть пользовательские переменные среды, на панели управления дважды щелкните компонент Система. Перейдите на вкладку Дополнительно и щелкните Переменные среды.

Следующий программный код является частью входного файла c:\testscript.txt :

Следующий программный код вводится в командной строке:

Следующий результат передается выходному файлу C:\Documents and Settings\<пользователь>\Local Settings\Temp\output.txt.

Д. Использование скрипта запуска

Сценарий запуска sqlcmd выполняется при запуске программы sqlcmd . В следующем примере задается переменная среды SQLCMDINI . Ниже приведено содержимое сценария init.sql.

Таким образом файл init.sql вызывается при запуске sqlcmd .

Параметр -X отключает функцию сценария запуска.

Е. Расширение переменной

В следующем примере показана работа с данными в форме переменной sqlcmd .

Вставляет одну строку в столбец Col1 объекта базы данных dbo.VariableTest , содержащего значение $(tablename) .

В командной строке sqlcmd , если ни одна переменная не равна $(tablename) , следующие инструкции возвращают эту строку и сообщение "Переменная скрипта "tablename" не определена". По умолчанию флаг -b sqlcmd на установлен. Если -b установлен, sqlcmd завершит работу после появления ошибки "Переменная не определена".

При условии, что переменная MyVar равна $(tablename) .

Эти инструкции возвращают строку и сообщение «Переменная сценария "tablename" не определена».

📎📎📎📎📎📎📎📎📎📎