我正在尝试从PowerShell调用SQL Server存储过程,但我总是在参数上出错。
存储过程有8个参数,都具有默认值
@simchain nvarchar
@idSimulation int
@idCompany varchar
@modelName nvarchar
@simDate datetime
@mySim int
@statusFloor int
@statusCap int
从Management Studio我甚至可以在没有任何参数的情况下调用此过程,因此只需执行EXEC [dbo].[E_simulations]
即可。
从PowerShell我创建一个连接和一个命令,但我总是在缺少参数时出错,例如
程序或功能'E_simulations'需要参数'@simchain',这是未提供的。
这是我的测试代码(只是为了测试正确执行)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection;
$SqlConnection.ConnectionString = $ConnectionString;
$SqlCommand = $SqlConnection.CreateCommand();
$SqlCommand.CommandText = "EXEC [dbo].[E_simulations]";
$SqlConnection.Open();
$returnedValue = $SqlCommand.ExecuteNonQuery();
我错过了什么吗?
答案 0 :(得分:1)
我做了快速测试。我希望这会有所帮助
CREATE PROC doTest (
@param1 INT = 1,
@param2 VARCHAR(10) = 'xxx'
)
AS
BEGIN
PRINT 'THIS ONE'
SELECT 1 As Data
END
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=localhost;Database=ForTests;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "doTest"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
Data
----
1
我完成了与你所写的相同的一切,并且我没有指定参数