У меня есть простой оператор вставки SQL в виде:
insert into MyTable (...) values (...)
Используется повторно для вставки строк и обычно работает как положено. Он вставляет ровно 1 строку в MyTable, что также является значением, возвращаемым оператором Delphi ActedRows: = myInsertADOQuery.ExecSQL.
Через некоторое время возникла временная проблема с сетевым подключением. В результате другие потоки того же приложения воспринимали EOleExceptions (Ошибка подключения, -2147467259 = неопределенная ошибка). Позже, сетевое соединение было восстановлено, эти потоки переподключены и были в порядке.
Поток, ответственный за выполнение оператора вставки, описанного выше, однако, не обнаружил проблем с подключением (без исключений) - возможно, он просто не выполнялся, когда сеть не работала. Но после проблем с сетевым подключением myInsertADOQuery.ExecSQL всегда возвращал 0 и строки больше не вставлялись в MyTable. После перезапуска приложения оператор вставки снова заработал, как и ожидалось.
Для SQL Server, есть ли определенный случай, когда вставка, подобная приведенной выше, не вставит строку и не вернет 0 в качестве числа затронутых строк? Первичный ключ - это автоматически сгенерированный GUID. Не существует уникальных или проверочных ограничений (которые в любом случае должны привести к исключению, а не к вставке строки).
Есть ли какие-либо известные ошибки ADO (поставщик = SQLOLEDB.1)?
Есть ли другие объяснения этому поведению?
Спасибо,
Нанг.