|
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) перезапуск не довелось попробовать, а ре индексация падала с этой же ошибкой.
|
|