2016-04-11 5 views
0

Wenn C# -Code mit Skriptkomponente von SSIS ausgeführt wird, bekomme ich diesen Fehler:ExecuteNonQuery() - bei System.RuntimeMethodHandle.InvokeMethod (Object Ziel, Object [] Argumente, Signatur sig, Boolean Konstruktor)

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

Hier lese ich eine Excel-Datei und erstelle dynamisch eine SQL-Server-Tabelle für den Dateinamen und lade die Daten. Dieser Fehler auftritt, während ich die Tabelle erschaffe (vor allem während der Aussage „myCommand.ExecuteNonQuery() ausgeführt wird;)

-Code Siehe: -

SqlConnection myADONETConnection = new SqlConnection(); 
myADONETConnection = (SqlConnection)(Dts.Connections["LANDConn"].AcquireConnection(Dts.Transaction) as SqlConnection); 
SqlCommand myCommand = new SqlCommand(tableDDL, myADONETConnection); 
myCommand.ExecuteNonQuery(); 

Was soll ich tun

+1

Bitte debuggen, und zeigen uns die sqlcommand, die Sie senden .. – BugFinder

+0

Es gibt keine Fehler in der „Fehler Botschaft". Sie haben nicht genügend Informationen gepostet, damit jemand Ihnen helfen kann. –

Antwort

0

Öffentlichkeit? void Main()

{ String FolderPath = Dts.Variables [ "User :: FolderPath"] Value.ToString();.

var directory = neues DirectoryInfo (FolderPath);

FileInfo [] files = Verzeichnis.GetFiles();

Zeichenfolge fileFullPath = "";

foreach (Fileinfo-Datei in Dateien)

{

string filename = ""; 

fileFullPath = FolderPath+"\\"+file.Name;      

filename = file.Name.Replace(".xlsx","");      

string ConStr; 

string HDR; 

HDR="YES"; 

ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
      fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=" + 
      HDR + ";IMEX=1\""; 

OleDbConnection cnn = new OleDbConnection(ConStr); 

cnn.Open(); 

DataTable dtSheet = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
        null); 

string sheetname; 

sheetname=""; 

foreach (DataRow drSheet in dtSheet.Rows) 

    { 
     if (drSheet["TABLE_NAME"].ToString().Contains("$")) 
     { 
      sheetname=drSheet["TABLE_NAME"].ToString(); 
      OleDbCommand oconn = new OleDbCommand("select * from [" + 
            sheetname + "]", cnn); 
      OleDbDataAdapter adp = new OleDbDataAdapter(oconn); 
      DataTable dt = new DataTable(); 
      adp.Fill(dt); 
      string tableDDL = ""; 
      tableDDL += "IF Not EXISTS (SELECT * FROM sys.objects WHERE 
          object_id = "; 
       tableDDL +="OBJECT_ID(N'[dbo].[" + filename +"]') AND 
          type in (N'U'))"; 
       tableDDL += "Create table [" + filename + "]"; 
       tableDDL += "("; 
       for (int i = 0; i < dt.Columns.Count; i++) 
       { 
        if (i != dt.Columns.Count - 1) 
        tableDDL += "[" + dt.Columns[i].ColumnName + "] " 
           + "NVarchar(max)" + ","; 
        else 
         tableDDL += "[" + dt.Columns[i].ColumnName + "] " 
             + "NVarchar(max)"; 
        } 
        tableDDL += ")"; 

       SqlConnection myADONETConnection = new SqlConnection(); 
       myADONETConnection = (SqlConnection) 
       (Dts.Connections["Connection 
        Manager"].AcquireConnection(Dts.Transaction) as 
          SqlConnection); 
       SqlCommand myCommand = new SqlCommand(tableDDL, 
        myADONETConnection); 
       myCommand.ExecuteNonQuery(); 

       //Load the data from DataTable to SQL Server Table. 
       SqlBulkCopy blk = new SqlBulkCopy(myADONETConnection); 
       blk.DestinationTableName = "[" + filename +"]"; 
       blk.WriteToServer(dt); 
      } 
     } 

}

+0

Hallo, Ich habe den oben genannten Code verwendet, um Daten aus einer Excel-Datei zu lesen und Tabellen dynamisch aus diesen Excel-Dateien zu erstellen. Aber, erwähnte Fehlermeldung insbesondere am myCommand.ExecuteNonQuery(); Linie. Bitte jemand schlägt irgendeine Möglichkeit vor, mich zu korrigieren .. – Deb

Verwandte Themen