none
Stored Procedure mit PowerShell aufrufen und Parameter setzten RRS feed

  • Frage

  • Hallo zusammen,

    ich versuche gerade mit PowerShell eine StoredProcedure aufzurufen und Parameter zu setzen.

    Erhalte aber die Meldung
    Ausnahme beim Aufrufen von "ExecuteNonQuery" mit 0 Argument(en):  "String[11]: die Size-Eigenschaft hat den ungültigen Wert 0.".

    Anbei das Script.

    Vermutlich ist hier etwas falsch oder fehlt etwas ?

    # Now we have to start the SQL database connection:
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source=$SQLServer;uid=$user;pwd=$pwd;Initial Catalog=$SQLDBName;Integrated Security=false;"
        
        #Now we will prepare to insert the data:
        
        $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
        $SqlCmd.Connection = $SqlConnection
        $SqlCmd.CommandText = "axNR_MOLOWriteLog2"
            

        $SqlCmd.CommandType = [System.Data.CommandType]"StoredProcedure";

        $SqlCmd.Parameters.AddWithValue(“@inModul", "$inModul") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inWRSTId", "$inWRSTId") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inUICulture", "$SpatialColumn") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inStartZeit ", "$KeyColumn") >> $null;
        $SqlCmd.Parameters.AddWithValue(“@inLocation", "$inModul") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inNachrichtenKategorie", "$inWRSTId") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inNachrichtenQuelle", "$SpatialColumn") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inERRORLogText", "$KeyColumn") >> $null;
        $SqlCmd.Parameters.AddWithValue(“@inWARNINGLogText", "$inModul") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inINFOLogText", "$inWRSTId") >> $null;
        $SqlCmd.Parameters.AddWithValue("@inTRACELogText", "$SpatialColumn") >> $null;

        $outParameter1 = new-object System.Data.SqlClient.SqlParameter; $outParameter1.ParameterName = "@outInfo";
        $outParameter1.Direction = [System.Data.ParameterDirection]'Output';
        $outParameter1.DbType = [System.Data.DbType]'String'; $SqlCmd.Parameters.Add($outParameter1) >> $null;
        
        $outParameter2 = new-object System.Data.SqlClient.SqlParameter; $outParameter2.ParameterName = "@outMeldung";
        $outParameter2.Direction = [System.Data.ParameterDirection]'Output';
        $outParameter2.DbType = [System.Data.DbType]'String'; $SqlCmd.Parameters.Add($outParameter2) >> $null;
        
        $outParameter3 = new-object System.Data.SqlClient.SqlParameter; $outParameter3.ParameterName = "@outResult";
        $outParameter3.Direction = [System.Data.ParameterDirection]'Output';
        $outParameter3.DbType = [System.Data.DbType]'Decimal'; $SqlCmd.Parameters.Add($outParameter3) >> $null;
        
        $SqlConnection.Open();
        $result = $SqlCmd.ExecuteNonQuery();  
        
        $truth = $SqlCmd.Parameters["@outInfo "].Value;
        $SqlConnection.Close();
        $truth;

    Mittwoch, 8. Februar 2017 08:16

Antworten

  • Hallo,

    ich glaube es hat eine Zeile gefehlt zumindest läuft das Script nicht mehr auf einen Fehler:

        $outParameter1.Value = $outInfo


     $outParameter1 = new-object System.Data.SqlClient.SqlParameter;
        $outParameter1.ParameterName = "@outInfo";
     $outParameter1.Direction = [System.Data.ParameterDirection]'Output';
     $outParameter1.DbType = [System.Data.DbType]'String';
        $outParameter1.Value = $outInfo

    • Als Antwort markiert Sv. Gr Mittwoch, 8. Februar 2017 11:06
    Mittwoch, 8. Februar 2017 11:06

Alle Antworten

  • Das klingt für mich eher nach einer SQL-Fehlermeldung. Hast Du's schon mal im SQL-Server-Forum probiert?

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 8. Februar 2017 08:43
  • Hallo nein noch nicht,

    da ich mir nicht sicher bin ob der PowerShell Code so stimmt.

    Da bin ich noch recht neu drin.

    Mittwoch, 8. Februar 2017 09:23
  • Hallo ,

    wahrscheinlich ist es doch eine SQL Fehlermeldung:

    Gibt es eine Möglichkeit den Beitrag ins SQL Forum zu verschiebene?

    $outParameter1 = new-object System.Data.SqlClient.SqlParameter; $outParameter1.ParameterName = "@outInfo";
        $outParameter1.Direction = [System.Data.ParameterDirection]'Output';
        $outParameter1.DbType = [System.Data.DbType]'String';
        $outParameter1
        $SqlCmd.Parameters.Add($outParameter1) >> $null;


    CompareInfo                     : None
    XmlSchemaCollectionDatabase     :
    XmlSchemaCollectionOwningSchema :
    XmlSchemaCollectionName         :
    ForceColumnEncryption           : False
    DbType                          : String
    LocaleId                        : 0
    ParameterName                   : @outInfo
    Precision                       : 0
    Scale                           : 0
    SqlDbType                       : NVarChar
    SqlValue                        :
    UdtTypeName                     :
    TypeName                        :
    Value                           :
    Direction                       : Output
    IsNullable                      : False
    Offset                          : 0
    Size                            : 0
    SourceColumn                    :
    SourceColumnNullMapping         : False
    SourceVersion                   : Current

    Ausnahme beim Aufrufen von "ExecuteNonQuery" mit 0 Argument(en):  "String[12]: die Size-Eigenschaft hat den ungültigen Wert 0."

    Mittwoch, 8. Februar 2017 10:31
  • Gibt es eine Möglichkeit den Beitrag ins SQL Forum zu verschiebene?

    Ja. Das muss dann aber der Moderator machen. Oder Du erstellst dort einfach einen neuen Beitrag mit Deiner Frage.

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 8. Februar 2017 11:04
  • Hallo,

    ich glaube es hat eine Zeile gefehlt zumindest läuft das Script nicht mehr auf einen Fehler:

        $outParameter1.Value = $outInfo


     $outParameter1 = new-object System.Data.SqlClient.SqlParameter;
        $outParameter1.ParameterName = "@outInfo";
     $outParameter1.Direction = [System.Data.ParameterDirection]'Output';
     $outParameter1.DbType = [System.Data.DbType]'String';
        $outParameter1.Value = $outInfo

    • Als Antwort markiert Sv. Gr Mittwoch, 8. Februar 2017 11:06
    Mittwoch, 8. Februar 2017 11:06