Доброго времени суток.
Кто-нибудь сталкивался с такой проблемой, как не работающая трассировка длинных SQL запросов в пакетном режиме?
Суть проблемы следующая: для тестового пользователя настроена трассировка длинных SQL запросов с отсечкой по апертуре в 20 мс. Есть код, который содержит запрос, который выполняется гарантированно дольше, чем 20 мс (класс Tutorial_RunBaseBatch):
X++:
public void run()
{
int64 i;
inventsettlement inventsettlement;
#OCCRetryCount
if (! this.validate())
throw error("");
try
{
i = WinAPIServer::getTickCount();
select count(recId) from inventsettlement;
info(strfmt("%1 ms", WinAPIServer::getTickCount() - i));
}
catch (Exception::Deadlock)
{
retry;
}
catch (Exception::UpdateConflict)
{
if (appl.ttsLevel() == 0)
{
if (xSession::currentRetryCount() >= #RetryNum)
{
throw Exception::UpdateConflictNotRecovered;
}
else
{
retry;
}
}
else
{
throw Exception::UpdateConflict;
}
}
}
При запуске в клиентской сессии трассировка успешно выводится в инфолог и попадает в таблицу SysTraceTableSQL. При запуске в пакетном режиме - не попадает никуда (при этом в инфолог из кода выводится сообщение вида X ms, где X > 20, т.е. запрос работает точно дольше, чем настроенная отсечка). Пробовал, пользуясь глобальными брейкпоинтами ставить точку останова в Application.sysTrace - не вызывается.
Есть ли решение данной проблемы или трассировка запросов в пакетном режиме вообще не работает в принципе и нужно пользоваться профайлером SQL?
DAX 2009 SP1, kernel 5.0.1600.3900.
SQL 2008 R2 Enterprise (x64).
Windows Server 2008 R2 Enterprise (x64).