2010-12-15 65 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

相关问题