【发布时间】:2018-05-29 21:44:22
【问题描述】:
我有一个 Powershell 脚本,我想执行一个 SQL Server 存储过程。存储过程有一个名为@backupType 的参数,它属于CHAR(1) 类型。我这样称呼它:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=(local);Database=master;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "sp_myStoredProcedure"
$SqlCmd.Connection = $SqlConnection
$SqlCmd.Parameters.Add("@backupType", [System.Data.SqlDbType]"Char", 1)
$SqlCmd.Parameters["@backupType"].Value = "F"
$result = $SqlCmd.ExecuteNonQuery()
$SqlConnection.Close()
我得到的错误是:
使用“0”参数调用“ExecuteNonQuery”的异常:“过程或函数'sp_myStoredProcedure'需要参数'@backupType',但未提供。”在 line:14 char:1
- $result = $SqlCmd.ExecuteNonQuery()
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : SqlException
我只能假设我指定了错误的参数,但是 Google 和搜索 SO 并没有发现任何有用的信息。有什么想法吗?
【问题讨论】:
-
$SqlCmd.Parameters是哈希表/字典吗? -
代码在我看来没问题,这是您的实际代码吗?
-
@TheIncorrigible1 我不这么认为。我希望它是强类型参数的集合,但我不能 100% 确定。
-
@DavidG 我删除了另外两个参数,它们都是字符串参数,并且在 SP 的早期出现。由于错误指定了 char 参数,我认为问题出在我的语法上,但也许错误具有误导性?我已经三次检查错别字等。
标签: sql-server powershell stored-procedures