Имя: Пароль:
1C
1С v8
Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK
0 Повелитель
 
01.08.16
08:32
В журнале справочника, или обращения запросом.
Вот такая ошибка вышла:
Ошибка выполнения запроса по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1

Погуглил, пишут, что возможно поврежденны данные.
Этим справочником можно пожертвовать, там вычисляемая информация для сайта.

Вопрос как лучше очистить справочник?
Вариант 1. Грохнуть в конфигураторе справочник (придется вечера ждать).
Вариант 2. Очистить этот справочник напрямую в MS SQL (но такого не доводилось делать).
1 mehfk
 
01.08.16
09:05
То есть вот так сразу ты готов убить данные?
2 apokrit
 
01.08.16
09:10
(0) Ошибка повторно воспроизводится?
Если нет - это относительно разовое явление.
Поможет переход на 8.3 (достаточно даже 8.3.3) со снятием режима совместимости.

Ну или просто читай данные в транзакции.
3 Повелитель
 
01.08.16
09:49
(1) Да готов. Этот справочник, промежуточный, в нем рассчитываются данные для выгрузки на сайт, элементы легко заново создать.
(2)  1С:Предприятие 8.3 (8.3.5.1570), режим совместимости Версия 8.2.16 вряд ли можно снять, конфа большей частью типовая, не понятно как себя поведет.
Думаю разовое.
А причем тут транзакция?
Но на всякий случай проверил.

    НачатьТранзакцию();
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КаналДоставкиНоменклатуры.Ссылка,
    |    КаналДоставкиНоменклатуры.Номенклатура,
    |    КаналДоставкиНоменклатуры.Поставка
    |ИЗ
    |    Справочник.КаналДоставкиНоменклатуры КАК КаналДоставкиНоменклатуры";
    
    РезультатЗапроса = Запрос.Выполнить();
    ТаблицаЗапроса = РезультатЗапроса.Выгрузить();
    
    ТабличноеПоле1.ЗаполнитьЗначения(ТаблицаЗапроса);
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    
    ЗафиксироватьТранзакцию();

Не помогло, та же ошибка.
4 apokrit
 
01.08.16
10:17
(0)
>А причем тут транзакция?
Транзакция при том, что в этом случае меняется уровень изоляции.
Без транзакции - READ UNCOMMITTED
С транзакцией минимум - READ COMMITTED
>Не помогло, та же ошибка.
Это значит одно из двух:
1. "Все пациенты лгут"
2. Врет в данном случае MS SQL Server и никакого NOLOCK нет.

Я в любом случае больше ничего посоветовать не могу.

P.S. 1 конечно существенно более вероятно
5 Повелитель
 
02.08.16
06:53
Решил проблему удалением справочника.
Понимаю, что грубо, но в данном случае это было оптимально, и заняло 5 минут.

Другие варианты требуют больше времени и опыта.

Всем спасибо, тема закрыта.
6 bodri
 
02.08.16
07:09
перезапуск SQL сервера и ре индексация могли помочь
7 Повелитель
 
02.08.16
08:14
(6) перезапуск не довелось попробовать, а ре индексация падала с этой же ошибкой.
Программист всегда исправляет последнюю ошибку.