#sql-server #powershell
#sql-сервер #powershell
Вопрос:
Я пытался запустить SQL-файл через powershell. Для скрипта необходимо передать 2 параметра через powershell. Я написал, как показано ниже:
$DBScriptFile = "C:powershellPower.sql"
$sqlParameters =@("id=1,2", "val1=2,3")
foreach($i in $sqlParameters)
{
Invoke-Sqlcmd -ServerInstance ServerName -Database test -Username "test" -Password "test" -InputFile $DBScriptFile -Variable $sqlParameters
}
T-sql SCRIPT: select * from t1 where id in($(id)) and val1 in($(val1))
Прямо сейчас я получаю вывод ниже:
id val1
-- ----
1 2
2 2
1 2
1 3
2 3
1 2
2 2
1 2
1 3
2 3
Я хочу, чтобы для каждого запуска в цикле параметры передавались в сочетании, например, для первого запуска значение должно быть передано 1 и 2, для второго запуска значение должно быть передано 2 и 3.
Ожидаемый результат должен быть примерно таким.
id val1
-- ----
1 2
1 2
2 3
1 2
1 2
2 3
Из созданного мной скрипта я получаю все комбинации обоих аргументов.
Я довольно новичок в powershell и не смог найти много информации об этом через Интернет. Не могли бы вы, пожалуйста, помочь мне разобраться в этом?
Комментарии:
1. каким будет ввод для идентификатора во втором запуске
2. @TheGameiswar Ожидаемое значение равно 2 для id и 3 для val1
Ответ №1:
Найдено решение: нам нужно использовать вложенный массив
$DBScriptFile = "C:powershellPower.sql"
$sqlParameters =(("id1=1", "val1=2"), ("id1=2", "val1=3"),("id1=2", "val1=2"))
foreach($i in $sqlParameters)
{
Invoke-Sqlcmd -ServerInstance ServerName -Database test -Username "test" -Password "test" -InputFile $DBScriptFile -Variable $i
}