Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Есть некая выгрузка из БД 1С (MS Sql Server 10.50.4000).
Запрос выбирает достаточно большой объём данных и работает около минуты. Для всех таблиц в запросе стоит NOLOCK.
Иногда случается "Could not continue scan with NOLOCK due to data movement", я как понял это связано с тем что данные которые выбираются в этот момент кто то меняет (правильно понял?). Как победить мне нужны любые данные пусть "грязные". Может какой нибудь уровень изоляции выставить. NOLOCK понятно убирать нельзя, как я понял если их убрать то будет весь мир ждать завершения выгрузки.
23 окт 12, 09:58    [13360386]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Если это важно выгрузка написана на дотнете через MS провайдер
23 окт 12, 09:59    [13360390]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Row Versioning-based Isolation Levels in the Database Engine
Ну и NOLOCK придется таки убрать.
23 окт 12, 10:10    [13360444]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
invm
Row Versioning-based Isolation Levels in the Database Engine
Ну и NOLOCK придется таки убрать.

Убрать то не вопрос, если выборка не будет тормозить работу сторонней системы.
База дана нам в ощущениях как данность, никаких изменений в ней делать нельзя. Есть коннект вытягивай данные и всё. Нет ключей на уровне сессии без всяких ALTER DATABASE.
Или всё настолько печально?
23 окт 12, 10:22    [13360521]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Database Snapshots
23 окт 12, 10:28    [13360563]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
Crimean
Member

Откуда:
Сообщений: 13148
насколько я помню, проблема из-за того, что во время вычитки меняются поля, входящие в кластерные индексы таблиц :)
в свое время борол эту бяку
как уже сказали - убираем NOLOCK в вычитке и для базы включаем RCSI или снапшот, в зависимости от того, что больше нравится
23 окт 12, 11:00    [13360807]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Crimean
насколько я помню, проблема из-за того, что во время вычитки меняются поля, входящие в кластерные индексы таблиц :)
в свое время борол эту бяку
как уже сказали - убираем NOLOCK в вычитке и для базы включаем RCSI или снапшот, в зависимости от того, что больше нравится
базу менять нельзя, она не наша и прав таких нет. Т.е. хинтами на уровне сессии нельзя побороть, тупняк
23 окт 12, 12:49    [13361812]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
barrabas
NOLOCK понятно убирать нельзя, как я понял если их убрать то будет весь мир ждать завершения выгрузки
Вот это совсем не обязательно.
23 окт 12, 12:50    [13361840]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
invm
Database Snapshots

Что то я не понял что имеется ввиду.
Создать какую то материализованную вьюху или что? мне не нужна вьюха со срезами данных на моменты времени. Мне тупо нужно без ошибок и не блокируя никого, тихо-мирно вытянуть данные по договорам.
Можно чуть попроще объяснить, я с sqlserver не работал глубже простых запросов и элементарных функций.
Просто я не понимаю сложностей, как бы с ораклой нет никаких проблем в этом плане, неужели нельзя просто прочитать, что в таблицах, плевать что кто то что то изменил, изменения при следующей загрузки вытяну.
23 окт 12, 15:41    [13363369]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
Crimean
Member

Откуда:
Сообщений: 13148
barrabas,

MSDN: "CREATE DATABASE AS SNAPSHOT OF"
23 окт 12, 15:46    [13363429]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
barrabas
invm
Database Snapshots

Что то я не понял что имеется ввиду.
Создать какую то материализованную вьюху или что? мне не нужна вьюха со срезами данных на моменты времени. Мне тупо нужно без ошибок и не блокируя никого, тихо-мирно вытянуть данные по договорам.
Можно чуть попроще объяснить, я с sqlserver не работал глубже простых запросов и элементарных функций.
Просто я не понимаю сложностей, как бы с ораклой нет никаких проблем в этом плане, неужели нельзя просто прочитать, что в таблицах, плевать что кто то что то изменил, изменения при следующей загрузки вытяну.
Волшебной кнопки "Сделай как мне нужно и чтоб ничего не пришлось изучать" нету. Самый простой выход -- убрать из ваших запросов хинт NOLOCK. Все остальные варианты требуют некоторых телодвижений, включая тестирование, со стороны владельцев БД.
23 окт 12, 16:00    [13363544]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
Glory
Member

Откуда:
Сообщений: 104760
barrabas
Просто я не понимаю сложностей, как бы с ораклой нет никаких проблем в этом плане, неужели нельзя просто прочитать, что в таблицах, плевать что кто то что то изменил

Интересно, а как прочитать данные, которые куда-то переместились ?
Поискать их по базе ?
23 окт 12, 16:06    [13363617]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Glory
barrabas
Просто я не понимаю сложностей, как бы с ораклой нет никаких проблем в этом плане, неужели нельзя просто прочитать, что в таблицах, плевать что кто то что то изменил

Интересно, а как прочитать данные, которые куда-то переместились ?
Поискать их по базе ?

Да я понял что sqlserver по умолчанию не работает как версионник, а жаль, я просто не привык к проблемам при простой выборке.
23 окт 12, 16:34    [13363885]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Glory
barrabas
Просто я не понимаю сложностей, как бы с ораклой нет никаких проблем в этом плане, неужели нельзя просто прочитать, что в таблицах, плевать что кто то что то изменил

Интересно, а как прочитать данные, которые куда-то переместились ?
Поискать их по базе ?

ну если удалили запись, то можно и не выводить ее в выборке, если уж мы получаем данные по состоянию на момент чтения, а не на момент начала операции, меня бы это устроило.
23 окт 12, 16:37    [13363906]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
Glory
Member

Откуда:
Сообщений: 104760
barrabas
ну если удалили запись, то можно и не выводить ее в выборке, если уж мы получаем данные по состоянию на момент чтения, а не на момент начала операции, меня бы это устроило.

Ага, а если запись переместили, то выводить ее 2 раза ?
23 окт 12, 16:44    [13363991]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Glory
barrabas
ну если удалили запись, то можно и не выводить ее в выборке, если уж мы получаем данные по состоянию на момент чтения, а не на момент начала операции, меня бы это устроило.

Ага, а если запись переместили, то выводить ее 2 раза ?

ну я бы пережил
в общем понятно
23 окт 12, 17:29    [13364405]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
step_ks
Member

Откуда:
Сообщений: 936
barrabas, сделать dbcc checkdb не помешает. Указанная ошибка нередко бывает также из-за проблем в бд.
23 окт 12, 20:36    [13365255]     Ответить | Цитировать Сообщить модератору
 Re: Победить Could not continue scan with NOLOCK due to data movement  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
step_ks
barrabas, сделать dbcc checkdb не помешает. Указанная ошибка нередко бывает также из-за проблем в бд.

да база не моя, у меня только права на рид для выгрузки
24 окт 12, 09:23    [13366454]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить