2016-07-07 70 views
1

我试图调用PowerShell脚本中的存储过程以将数据插入到SQL Server表中。该脚本运行正常,没有错误,但应写入表中的信息不存在。我不确定代码不起作用,因为我对PowerShell相当陌生。任何帮助,这将不胜感激。在PowerShell中调用存储过程以插入到SQL Server数据库中

function WriteData 
{ 
    param 
    (
     [String] $Server, 
     [int] $CheckId, 
     [String] $Investigate 
    ) 

    try 
    { 
     $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
     $SqlConnection.ConnectionString = "Server=MyServer;DataBase=MyDatabase;Integrated Security=SSPI" 
     $SqlConnection.open() 
     $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
     $SqlCmd.CommandType = [System.Data.CommandType]::StoredProcedure 
     $SqlCmd.CommandText = "EXEC dbo.usp_InsertTest" 

     $param1=$sqlcmd.Parameters.Add("@param1" , [System.Data.SqlDbType]::VarChar) 
     $param1.Value = $param1 
     $param2=$sqlcmd.Parameters.Add("@param2" , [System.Data.SqlDbType]::Int) 
     $param2.Value = $param2 
     $param3=$sqlcmd.Parameters.Add("@param3" , [System.Data.SqlDbType]::VarChar) 
     $param3.Value = $param3 

     $SqlCmd.Connection = $SqlConnection 
     $tmp=$SqlCmd.ExecuteNonQuery() 
     $SqlConnection.Close() 
    } 
    catch 
    { 
     if($SqlConnection.State -eq "Open") 
     { 
      $SqlConnection.Close() 
     } 
     return -1 
    } 
} 

WriteData -Param1 Test -Param2 1 -Param3 HelloWorld 

回答

4

这看起来错:

$param1.Value = $param1 
$param2.Value = $param2 
$param3.Value = $param3 

尝试这些值设置为你真正想要的东西。例如

$param1.Value = 'hi' 
$param2.Value = 1 
$param3.Value = 'bye' 
+0

我甚至没有注意到这一点。我认为需要一双新鲜的眼睛。这一直奏效。谢谢! – Cornflake2068

相关问题