只是想知道如何在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
答案 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
}