У меня проблема с Visual C ++ и Microsoft SQL Server 2008R2.
Следующий код будет иногда зависать:
Object->Update();
if(Object->CanRestart())
{
//Why does this not return??
m_pDBRoRBaseObject->Requery();
}
Object
происходит от CRecordset
, Мне кажется, что это вызов ::SQLExecute(m_hstmt)
в Requery()
метод зависает, но я не могу (с моим текущим набором навыков в любом случае) найти способ обойти это.
У кого-нибудь была подобная проблема или какое-либо понимание?
Кажется, я помню (давно, очень давно), что Requery — по крайней мере с некоторыми драйверами базы данных — перестраивает запрос как один большой оператор IN, используя PK строк, которые вы уже собрали. Это, конечно, может быть неэффективно, в зависимости от ваших настроек, метрик, данных и т. Д.
Стоит запустить SQL Profiler и посмотреть, что именно выдает ваш оператор Requery ().
Если бы проблема с общей памятью … была исправлена с помощью объекта события, сигнализированного соответствующим образом. И дымящаяся порция вороны. Вкусные!