2016-07-14 3 views
-3

誰でも下記のコードを修正するのを手伝ってもらえますか?私はファイルの代わりにデータベースのテーブルにエラーをキャプチャしようとしています。ファイルの代わりにテーブルにエラーをキャプチャする - C#スクリプトタスクSSDT-2013

現在のコードはログテーブルにエラーを書き込みますが、どのようにしてテーブルに同じエラーを書き込むかを変更できます。

コード

   catch (Exception exception) 
       { 
        // Create Log File for Errors 
        using (StreamWriter sw = File.AppendText(Dts.Variables["User::LogFolder"].Value.ToString() 
         + "\\" + "ErrorLog_" + datetime + ".log")) 
        { 
         sw.WriteLine(exception.ToString()); 
         Dts.TaskResult = (int)ScriptResults.Failure; 
        } 

       } 

       Dts.TaskResult = (int)ScriptResults.Success; 
      } 

ことが可能であるならば、あなたの貴重な提案を共有してください。私がしようとする前に、SQLオブジェクトの作成を移動するか、あるいはあなたがあなたに、catchブロックでそれをそのアップ繰り返す必要があります

答えて

1

まず

感謝...。

   ConnectionManager ConMgr = Dts.Connections.Add("ADO.NET:SQL"); 
       ConMgr.ConnectionString = "data source=database;initial catalog=zzzz_PRC;integrated security=true;persist security info=True;"; 
       ConMgr.Name = "DBConn"; 
       ConMgr.Description = "DBConn"; 
       SqlConnection myADONETConnection = new SqlConnection(); 
       myADONETConnection = (SqlConnection) 
       (Dts.Connections["DBConn"].AcquireConnection(Dts.Transaction) as SqlConnection); 

次は、単にファイルに代わりログのクエリを実行します。

  catch (Exception exception) 
      { 
         string query = "Insert into " + SchemaName + ".logtable (Logtextcolumn) "; -- change tablename and columns desired. 
         query += "VALUES('" + exception.ToString() + "')"; 
         SqlCommand myCommand1 = new SqlCommand(query, myADONETConnection); 
         myCommand1.ExecuteNonQuery(); 

        Dts.TaskResult = (int)ScriptResults.Failure; 
       } 

      } 
関連する問題