Я использую 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 секунд возникнет ошибка тайм-аута.