我試圖從Azure中運行手冊中調用維護SP:調用存儲過程從一個Azure的參數運行手冊
inlinescript {
.........
$Cmd = New-object System.Data.SqlClient.SqlCommand
$Cmd.Connection = $Conn
$Cmd.CommandText = "EXEC [dbo].[BackupLogTable] @tableName, @olderThan"
$Cmd.Parameters.AddWithValue("@tableName", $TableName)
$Cmd.Parameters.AddWithValue("@olderThan", $OlderThan)
$Cmd.ExecuteNonQuery()
.....
}
的SP聲明如下:
alter procedure [dbo].[BackupLogTable] (
@tableName nvarchar(512),
@olderThan int
)
with execute as owner as
和我可以在我的Runbook使用的同一用戶下成功運行SSMS。但在Azure的門戶網站進行測試時,它,我發現了以下錯誤:
Exception calling "ExecuteNonQuery" with "0" argument(s): "The parameterized query '(@tableName nvarchar(4000),@olderThan nvarchar(4000))EXEC [dbo].' expects the parameter '@tableName', which was not supplied."
我試圖通過在網絡上找到的參數,如這一個的每一個其他變體:
$Cmd.CommandText = "[BackupLogTable]"
$Cmd.CommandType = [System.Data.CommandType]::StoredProcedure
$Cmd.Parameters.Add("@tableName", [System.Data.SqlDbType]::NVarChar, 512) | Out-Null
$Cmd.Parameters["@tableName"].Value = $TableName
$Cmd.Parameters.Add("@olderThan", [System.Data.SqlDbType]::Int) | Out-Null
$Cmd.Parameters["@olderThan"].Value = $OlderThan
和其他許多人,但它總是失敗:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Procedure or function 'BackupLogTable' expects parameter '@tableName', which was not supplied."
我在做什麼錯?
謝謝! 'inlinescript'中我不知道'$ using'是需要的。 – UserControl