Powershell存储过程参数未发送

时间:2016-11-25 15:56:01

标签: sql powershell stored-procedures

我在PowerShell(版本4)脚本中有一个存储过程,用于记录作业的结果

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()
}

但是,当我运行它时,我总是得到以下错误响应:

  

使用“0”参数调用“ExecuteNonQuery”的异常:“过程或函数'LSBuild_LogAndMailResult'需要参数'@Deployment_Status',   没有提供。

我检查了Powershell ISE中的终端窗口,以确保参数在那里($ cmd.Parameters [“@ Deployment_Status”]。value;)并且肯定会被添加。不知道为什么它没有传递到数据库

1 个答案:

答案 0 :(得分:3)

您必须将命令类型设置为存储过程

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