2016-11-25 2 views
1

У меня есть хранимую процедуру в (версия 4) скрипт PowerShell, который регистрирует результаты работыPowershell хранимая процедура Параметры не отправляются

function Log-Build($lastExitCode, $result, $taskId) { 
    $date = Get-Date 
    $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString) 

    $cmd = New-Object System.Data.SqlClient.SqlCommand 
    $myResult = $result -join "<br/>`r`n" |Out-String 
    $cmd.Connection = $connection; 

    $cmd.CommandText = "LSBuild_LogAndMailResult"; 

    $cmd.Parameters.AddWithValue("@Task_ID",[string]$taskId); 
    $cmd.Parameters.AddWithValue("@Result",[string]$myResult); 
    $cmd.Parameters.AddWithValue("@Deployment_Status",[int]$lastExitCode); 

    $connection.Open() 
    $cmd.ExecuteNonQuery() | Out-Null 
    $connection.Close() 
} 

Однако, когда я бегу, я всегда получаю следующее сообщение об ошибке ответ:

Исключение вызова "ExecuteNonQuery" с "0" аргумент (ы): «Процедура или функция 'LSBuild_LogAndMailResult' ожидает, что параметр '@Deployment_Status', который не был поставляемый

.

Я проверил в окне терминала в Powershell ISE, чтобы убедиться, что параметр был там ($ cmd.Parameters ["@ Deployment_Status"]. Значение;) и он определенно добавляется. Не знаю, почему он не получает передается в базу данных

+0

'$ LASTEXITCODE' является автоматическим переменным, переименовать' параметра $ lastExitCode' в функции к чему-то еще –

+0

Я просто попытался удалить $ lastExitCode и добавить твердокодированное целое число (0) в качестве параметра sql, но все равно получил тот же результат – Daryl1976

ответ

2

Вы должны установить тип команды в хранимой процедуре

$cmd.CommandType = [System.Data.CommandType]::StoredProcedure 
+0

Спасибо, что это было - я не мог найти документацию по этому адресу – Daryl1976

Смежные вопросы