2010-12-15 75 views
2

我有下面的代碼試圖做從Oracle到SQL Server 2005的批量複製,並保持超時。我如何擴展oracle連接超時?看來我不能從我在網上閱讀的東西中獲得。.net應用程序的oracle連接超時

OracleConnection source = new OracleConnection(GetOracleConnectionString()); 
source.Open(); 

SqlConnection dest = new SqlConnection(GetSQLConnectionString()); 
dest.Open(); 


OracleCommand sourceCommand = new OracleCommand(@"select * from table"); 


using (OracleDataReader dr = sourceCommand.ExecuteReader()) 
      { 
       using (SqlBulkCopy s = new SqlBulkCopy(dest)) 
       { 
        s.DestinationTableName = "Defects"; 
        s.NotifyAfter = 100; 
        s.SqlRowsCopied += new SqlRowsCopiedEventHandler(s_SqlRowsCopied); 
        s.WriteToServer(dr); 
        s.Close(); 
       } 
      } 

source.Close(); 
dest.Close(); 

這裏是我的Oracle連接字符串:

return "User Id=USER;Password=pass;Data Source=(DESCRIPTION=" + 
        "(ADDRESS=(PROTOCOL=TCP)(HOST=14.12.7.2)(PORT=1139))" + 
        "(CONNECT_DATA=(SID=QCTRP1)));"; 

回答

0

在連接字符串中,有一個「連接生存期」和「連接超時」參數。你可以相應地設置它。請參閱here以獲取完整參考。我知道你沒有問這個問題,但是你有沒有考慮過一個用於遷移數據庫記錄的ETL工具(例如Informatica,FME等)?雖然你的方法是有效的,但它不會是非常高效的,因爲你正在將所有記錄從一個數據庫保存到客戶端,然後將它們序列化到另一個數據庫。對於小批量設置,這不是一個大問題,但如果您正在處理數十萬行,則可能需要考慮使用官方的ETL工具。

+0

它不在預算中,並且只有20,000條記錄。我希望成爲一名優秀的公民,並且不會超過所需的資源鎖定 – kacalapy 2010-12-15 18:57:57

+0

是否有免費的ETL工具可用於將ORACLE數據導入SQL,並計劃每天定期運行這些工具? – kacalapy 2010-12-15 18:58:49

+0

我的頭腦裏沒有任何建議,但谷歌搜索「free etl」返回了一些有希望的結果。大多數ETL工具都與數據庫無關(或至少支持Oracle和SQL Server)。 – 2010-12-15 19:01:05

相關問題