Добавить сценарий SQL внутри сценария Powershell - PullRequest
0 голосов
/ 02 июля 2019

Просто интересно, как я могу добавить сценарий sql внутри сценария powershell. Прямо сейчас у меня есть скрипт, который получает этот файл sql и запускается для каждой базы данных. Мне было интересно, смогу ли я включить этот сценарий SQL внутри моего PowerShell. Я планирую ежедневно запускать сценарий PowerShell.

Вот что у меня есть на данный момент

$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  InputFile = 'C:user\test.sql'
    QueryTimeout = 120 #avoid query to break
 }

Цель: попытаться реализовать SQL-код внутри INPUTFILE вместо вызова / указания пути для SQL-файла

Цель:

 InputFile = SQL SCRIPT

1 Ответ

2 голосов
/ 02 июля 2019

Я могу привести только пример, так как не знаю содержимого сценария sql.

$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  Query = "Select Column1,Column2 from Table"
  QueryTimeout = 120 #avoid query to break
 }
 Invoke-Sqlcmd @InvokeParams
}

Вам просто нужно добавить свой запрос к ключу Query в вашей хэш-таблице $InvokeParams. Если вы хотите, чтобы ваша хеш-таблица была более точной, вы всегда можете ввести запрос в виде строки и установить для него другую переменную. Затем используйте Query = $variable в вашей хэш-таблице. Если запрос длинный (многострочный) и содержит другие кавычки, вы можете использовать здесь-строку (@''@ или @""@) для упрощения.

$Query = @'
USE Database
Select Table1.Column1,Table1.Column2,Table2.Column1
FROM Table1
JOIN Column1 ON Table2.Column1=Table1.Column1
GO
'@
$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  Query = $Query
  QueryTimeout = 120 #avoid query to break
 }
 Invoke-Sqlcmd @InvokeParams
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...