Это работает в 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
Почему '' + =? Вы сначала определили пустой массив? Вы можете попытаться сделать строку дословно с помощью синтаксиса '@" моей строки "'. – arco444
@ arco444 - нет, это была только опечатка с моей стороны. Удаление его по-прежнему вызывает ту же ошибку. –
Надеюсь, он исправлен. один из способов, которыми я использую эту задачу, - после запуска запроса на SQL Server сохранить запрос qu в файле, затем получить запрос в переменную с помощью команды $ query = get-content PATH TO QUERY FILE -Delimiter "{FIM } " Я добавляю разделитель для этого, чтобы захватить содержимое до конца файла как одну строку, а не массив строки SQL Server 2012 и более поздние версии поставляются с модулем SQLPS, который включает команду Invoke-SqlCmd. Существует одна конкретная причина для создания этой функции? Если вы хотите использовать этот подход, скажите мне, что я пришлю вам. –