在Powershell脚本中添加SQL脚本

时间:2019-07-02 17:17:33

标签: powershell

只是想知道如何在Powershell脚本中添加sql脚本。 现在我有一个脚本,该脚本获取此sql文件并为每个数据库运行。我想知道是否可以在我的Powershell中包含此sql脚本。我计划将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
 }

目标:尝试在INPUTFILE内实现sql代码,而不是调用/提供sql文件的路径

目标:

 InputFile = SQL SCRIPT

1 个答案:

答案 0 :(得分:2)

由于我不知道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
}