Добрый день!
Подскажите пожалуйста как делать обработку потенциальных дедлоков при работе с подключением к внешней базе данных через ODBC.
Есть подобный код:
X++:
LoginProperty lp;
ODBCConnection conn;
Statement Statement;
str query;
ResultSet rs;
counter counter = 0;
;
lp = new LoginProperty();
lp.setDSN("SomeDB");
conn = new ODBCConnection(lp);
Statement = conn.createStatement();
query = strfmt( @"exec [dbo].[SomeSP]" );
rs = Statement.executeQuery(query);
while (rs.next()) // **** Тут иногда валится с ошибкой (1)
{
counter++;
}
Он порой валится с ошибкой (1) вида:
При этом в хранимой процедуре в начале стоят SET NOCOUNT ON ; SET ANSI_WARNINGS OFF ;
И в единственном select все таблицы с хинтами (nolock), но все равно происходит deadlock как-то. Как его правильно отловить в вызове из Axapta ? что-нибудь наподобие
X++:
try {ttsbegin; ... ttscommit; } catch(Exception::Deadlock) { retry; }
для ODBC есть ?