Показать сообщение отдельно
Старый 01.02.2017, 14:27   #21  
Alenka is offline
Alenka
Участник
 
58 / 25 (1) +++
Регистрация: 19.04.2006
Я нашла причину. И она оказалась вовсе не в базе данных, а в коде.
Был добавлен вызов SQL запроса, в котором в начале отключался вывод кол-во полученных строк результата (set nocount on), а в конце забыли его включить (set nocount off). После выполнения запроса любой следующий update любой таблицы выдает ошибку "Вы пытаетесь оперировать с одной записью, но затрагивается большее количество записей. Проверьте индексы, запустите синхронизацию базы данных, или что-либо эквивалентное."

Например, выполнение вот такого простейшего job'a приведет к ошибке для следующего update'a любой записи на любой форме.

X++:
static void probaSetNocountOff(Args _args)
{
    UserConnection          connection      = new UserConnection();
    Statement               stmt            = connection.createStatement();
    ResultSet               rSet;
    str                     query_;
    ;
    query_ = "set nocount on"
           + "\n"
           + "select top 1 ItemId "
           + "from InventTable (nolock) "
           + "where dataareaID = '" + curext() + "'"
           + "\n"
//         + "set nocount off"
           ;

    rSet = stmt.executeQuery(query_);

    while (rSet.next())
    {
        info(rset.getString(1));
    }
}
Если добавить set nocount off, то ошибки не будет.

В общем, сами создаем себе проблемы.

Всем спасибо за ответы.
За это сообщение автора поблагодарили: olesh (1), S.Kuskov (5).