2013-01-19 32 views
1

我有以下代碼OracleBulkCopy錯誤: '0' 不是 '間隔'

using (OracleConnection srcConn = new OracleConnection()) 
    using (OracleConnection destConn = new OracleConnection()) 
    { 
     srcConn.ConnectionString = AppInfo.SrcConnStr; 
     srcConn.Open(); 
     destConn.ConnectionString = AppInfo.DestConnStr; 
     destConn.Open(); 

     using (OracleCommand destCmd = new OracleCommand("ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi:ss'", destConn)) 
     using (OracleCommand srcCmd = new OracleCommand("ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi:ss'", srcConn)) 
     { 

     // Non-query 
     srcCmd.ExecuteNonQuery(); 
     destCmd.ExecuteNonQuery(); 
     if (Timing) { ut.TimeIt(stopwatch, "Get Connection and Command"); } 

     srcCmd.CommandTimeout = 0; 
     destCmd.CommandTimeout = 0; 

     srcCmd.CommandText = "select * from table_name"; 
     rd = srcCmd.ExecuteReader(); 
     rd.FetchSize = rd.RowSize * AppInfo.BatchSize; } 

     OracleBulkCopy copy = new OracleBulkCopy(destConn); 
     copy.DestinationTableName = DestTable; 
     copy.BatchSize = AppInfo.BatchSize; 
     copy.NotifyAfter = AppInfo.BatchSize; 
     copy.OracleRowsCopied += new OracleRowsCopiedEventHandler(OnOracleRowsCopied); 
     copy.BulkCopyTimeout = AppInfo.CommandTimeOut; 
     copy.WriteToServer(rd); 

     } 
    } 

當它得到copy.WriteToServer(RD)的有效值;它給出了以下錯誤

System.ArgumentException was caught 
Message='0' is not a valid value for 'Interval'. 'Interval' must be greater than 0. 
Source=System 
StackTrace: 
    at System.Timers.Timer.set_Interval(Double value) 
    at Oracle.DataAccess.Client.OracleBulkCopy.PerformBulkCopy() 
    at Oracle.DataAccess.Client.OracleBulkCopy.WriteDataSourceToServer() 
    at Oracle.DataAccess.Client.OracleBulkCopy.WriteToServer(IDataReader reader) 

我的問題是,我該如何解決它?

任何幫助表示讚賞。

回答

1

問題可能是將CommandTimeout設置爲零。嘗試一個合理的數字。我認爲這是以秒爲單位指定的。

+0

Richard,謝謝你的回覆。我很感激。你是對的。 copy.BulkCopyTimeout設置爲0,這是導致此錯誤的原因。將其設置爲非零數字的作品。 – Shawn

+0

很高興能有所幫助。請接受答案。 –