Запрос на выборку из базы данных Oracle не получает тайм-аут - подключен через ADODB взаимодействия - PullRequest
0 голосов
/ 27 мая 2019

Я использую ADODB interop DLL Version: 6.0.0.0 для подключения к базе данных любого типа.

CommandTimeout составляет 3 секунды. Открытие набора записей с помощью командного объекта с таймаутом в 3 секунды.

При работе с базой данных Oracle с огромными данными, когда я вхожу в запрос на выборку, время не истекает.

Как отключить выполнение запроса?

Я также пытался установить тайм-аут команды на 1 секунду, но время его ожидания не истекло.

Установить время ожидания соединения равным 3 секундам (я знаю, что это отличается от времени ожидания команды, но все еще пытался)

** В базе данных MSSQl, в хранимой процедуре, если я вставлю 10 недостающих записей и после этого у меня будет запрос на выборку, он на самом деле дает тайм-аут при выполнении процедуры, но если у меня есть только запрос на выборку в методе, он не будет время ожидания.

public DataTable ExecuteQuery(string commandText, int timeout = 3)
{
    if (connection.State.Equals(connected))
    {
        var command = createCommand(commandText, CommandTypeEnum.adCmdText, 3);                     

        var recordset = createRecordset();  recordset.Open(command);

        command = null;     return dataTable; 
    }
}

private Command createCommand(string commandText, CommandTypeEnum  commandType, int timeout = 3)
{
    var command = new ADODB.Command
    {
        ActiveConnection = connection,
        CommandText = commandText,
        CommandType = commandType,
        CommandTimeout = timeout
    };

    return command;
}

private Recordset createRecordset()
{
    return new Recordset
    {
        CursorType = CursorTypeEnum.adOpenStatic,
        CursorLocation = CursorLocationEnum.adUseClient,
        LockType = LockTypeEnum.adLockReadOnly,
    };
}

Я ожидаю, что при превышении времени ожидания запроса более 3 секунд возникнет ошибка тайм-аута.

...