Тайм-аут соединения Oracle приложения .net - PullRequest
2 голосов
/ 15 декабря 2010

У меня есть код ниже, пытающийся сделать массовую копию из Oracle на SQL Server 2005, и время ожидания истекает. как я могу продлить тайм-аут соединения оракула? кажется, я не могу из того, что я читаю в Интернете.

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();  

вот моя строка соединения оракула:

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

Ответы [ 2 ]

3 голосов
/ 23 ноября 2012

Вы можете установить параметр s.BulkCopyTimeout

0 голосов
/ 15 декабря 2010

В вашей строке подключения есть параметры «Время жизни соединения» и «Время ожидания соединения».Вы можете установить его соответственно.См. здесь для полной справки.

Кстати, я знаю, что вы не спрашивали об этом, но рассматривали ли вы инструмент ETL для переноса записей вашей БД (например, Informatica, FME и т. Д.)?Хотя ваш подход верен, он не будет очень производительным, поскольку вы переносите все записи из одной БД в клиент и затем сериализуете их в другую БД.Для небольших групповых наборов это не является большой проблемой, но если вы обрабатываете сотни тысяч строк, вам может понадобиться официальный инструмент ETL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...