У меня запрос на обновление поля состояния с ошибкой
$error = "g is not a valid value for this element. An error occurred while parsing the 'SynchronizeSecurity' element at line 14, column 46 ('http://schemas.microsoft.com/analysisservices/2003/engine' namespace) under Envelope/Body/Execute/Command/Synchronize/SynchronizeSecurity."
Function Query($Query) {
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Initial Catalog=$Database;Integrated Security=SSPI"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandText = $Query
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$a=$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0] }
#Updating status field
Query "UPDATE [$Table]
SET [status] = '$error'
WHERE [db_name] = '$DB' AND [server] = '$server[-1])'"
Обновление не работает. Я отладил и выяснил, что это связано с одинарными кавычками. Если я вставляю содержимое ошибки прямо в таблицу, она вставляется просто отлично.
Я удостоверился, что это не проблема кода, поэтому я установил текст ошибки «Привет» и «тестирование», и оба раза он обновлял таблицу с этими текстами просто отлично.
Так что теперь я уверен, что происходит потому, что SET
требует заключить текст поля в одинарные кавычки, а моя ошибка содержит одинарные кавычки 'SynchronizeSecurity'
, что-то противоречит друг другу и, следовательно, не обновляет таблицу сообщением об ошибке.
Как я могу обойти это? Может быть, как будет работать обратный удар в этом запросе?