簡體   English   中英

從Powershell調用SQL Server存儲過程

[英]Calling SQL Server stored procedure from powershell

我正在嘗試從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();

我想念什么嗎?

我做了快速測試。 我希望這個能幫上忙

進行測試程序:

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

我所做的一切都和您寫的一樣,沒有分配參數也有結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM