首页 > 解决方案 > 在 PowerShell 中为 sqlcmd 指定具有多个语句的 SQL 脚本

问题描述

我需要跨多个(几个)数据库进行查询,以查看每个数据库上是否有特定的 SQL Server 代理作业名称。我原以为分号字符会分隔 SQL 语句,但它们的组合似乎不起作用。我是否坚持指定`r`n单独的语句?有没有更好的办法?

@('DBDEV','DBTEST','DBPROD') |
    ForEach-Object {
        & sqlcmd -S $_ -q "SELECT '$_', name FROM msdb.dbo.sysjobs SJ WHERE name = 'THE_JOB_NAME'`r`nGO`r`nEXIT"
    }

标签: powershellsqlcmd

解决方案


AdminOfThings 和 vonPryz 提到的组合:

$query = @"
SELECT Name
FROM msdb.dbo.sysjobs SJ
WHERE name = 'THE_JOB_NAME'
"@

$databases = @('DBDEV','DBTEST','DBPROD')
foreach ($database in $databases) {
    Invoke-SqlCmd -ServerInstance $_ -Database 'msdb' -Query $query
}

推荐阅读