从powershell调用SQL Server存储过程

时间:2015-03-06 13:04:27

标签: sql-server powershell stored-procedures

我正在尝试从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();

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我做了快速测试。我希望这会有所帮助

制作测试程序:

CREATE PROC doTest (
    @param1 INT = 1,
    @param2 VARCHAR(10) = 'xxx' 
)
AS
BEGIN

PRINT 'THIS ONE'
SELECT 1 As Data

END

查找执行proc:

的PowerShell代码
$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

我完成了与你所写的相同的一切,并且我没有指定参数