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

0

Я пытаюсь создать пакет для выполнения нескольких sql-скриптов и некоторых запросов. Я использую sqlcmd в моей партии следующим образом:

@echo off
sqlcmd -S server -U user -P password -Q query

Поскольку я буду выполнять разные запросы на одном сервере, я бы хотел заменить оператор сервера переменной. Поэтому я мог бы написать что-то вроде этого:

@echo off
SET server=192.X.X.X
sqlcmd -S server -U user -P password -Q first query
sqlcmd -S server -U user -P password -Q second query

Я нашел этот вопрос на SO, но я все еще не могу понять, как это работает:

SQLCMD с использованием пакетной переменной в запросе

У кого-нибудь есть идея?

Большое спасибо!

Теги:
batch-file
sqlcmd

2 ответа

1
Лучший ответ

Немного расширив свой комментарий:

@Echo off
Set "server=192.X.X.X"
Set "user=myname"
Set "password=pa55w0rd"
sqlcmd -S %server% -U %user% -P %password% -Q first query
sqlcmd -S %server% -U %user% -P %password% -Q second query

Вы можете приложить свои переменные с соответствующим цитированием по мере необходимости.

  • 0
    А что если я хотел бы объединить переменную со строкой в sqlcmd? Я попытался с "sqlcmd -S% server% &" myString ", но это не работает. Возможно ли это напрямую в операторе sqlcmd или я должен сделать это объединение в SET var =% server% &" myString "в ordre, чтобы использовать его потом ?
  • 0
    Если вы хотите присоединиться к ним, просто используйте Set "var=%server% myString" Set "var=%server% myString" или без них по мере необходимости) . Кроме того, если вы хотите включить амперсанд, & тогда вам нужно будет экранировать его с помощью каретки ^ например, Set "var=%server% ^& myString" .
0

От Microsoft: "Cmd.exe предоставляет переменные расширения пакетного параметра от% 0 до% 9. Когда вы используете параметры партии в пакетном файле,% 0 заменяется именем командного файла, а% 1 -% 9 заменяются соответствующим аргументы, которые вы вводите в командной строке ".

Поэтому, если количество запросов, которые вы хотите выполнить, известно, просто передайте их через такие параметры:

Test.bat:

@echo off
SET server=192.X.X.X
sqlcmd -S server -U user -P password -Q %1%
sqlcmd -S server -U user -P password -Q %2%

Затем вызовите Test.bat следующим образом:

Test.bat "Select * from Test1" "Select * From Test2"

Таким образом вы можете передать до 9 запросов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню