【发布时间】:2015-12-01 15:09:00
【问题描述】:
这在 SQL Server 中有效,但每当我尝试在我的 powershell 环境中运行它时,它都会在 d 附近出现语法错误的错误。为了在 powershell 中运行,我必须改变什么?
Function Run-Query
{
param([string[]]$queries)
$server='Server'
$dbname='Database'
$connStr='Server={0};Database={1};Integrated Security=SSPI;' -f $server,$dbname
For ($i = 0; $i -lt $queries.count; $i++)
{
$Command = New-Object System.Data.SqlClient.SqlCommand
$conn=New-Object System.Data.SqlClient.SQLConnection($connStr)
$conn.Open()
$Command.Connection = $conn
$Command.CommandText=$queries[$i]
$Command.ExecuteNonQuery()
$conn.Close()
}
}
$updatequery = "UPDATE d
SET [updatedate] = GETDate(),
[shipped] =
(
CASE WHEN NOT EXISTS(Select 1 *
from [server].[db].[dbo].[viewname] vw
WHERE vw.customername = d.customername)
THEN 'Yes'
ELSE
'PreviousCustomer'
END
)
FROM $fulllocation
WHERE ([shipped] IS NULL)
AND ([managerapproved] IS NOT NULL)
AND [readytoship] IN ('Go', 'Ready', 'Send')"
Run-Query -queries $updatequery
【问题讨论】:
-
为什么是
+=?您是否先定义了一个空数组?您可能想尝试使用@"my string"语法逐字制作字符串。 -
@arco444 - 不,这只是我的错字。删除它仍然会引发相同的错误。
-
我希望它已修复。我用来执行此任务的一种方法是在 SQL Server 上运行查询后将 que 查询保存在文件中,然后使用命令 $query= get-content PATH TO QUERY FILE -Delimiter "{FIM} 将查询放入变量中" 我为它添加了分隔符来抓取内容,直到文件末尾作为一个字符串而不是字符串数组 SQL Server 2012,后来附带了包含 Invoke-SqlCmd 命令的 SQLPS 模块。创建此功能有一个特定原因?如果您想使用这种方法,请告诉我,我会发送给您。