Не удалось продолжить просмотр с nolock вследствие перемещения данных 1с
Иногда я получаю «Не удалось продолжить сканирование с помощью NOLOCK из-за перемещения данных» с некоторыми большими заданиями, которые имеют WITH (NOLOCK) в выбранных запросах.
Я понимаю, что это связано с попыткой выбора данных, когда произошел разрыв страницы, из-за чего данные больше не были такими, где они должны были быть. Я предполагаю, что это то, что происходит в моей среде.
Как я могу воспроизвести это?
Я пытаюсь сделать краткосрочное обходное решение, чтобы поймать ошибку и повторить попытку, когда это произойдет, но я не могу проверить его, если не могу воспроизвести его. Есть ли достаточно надежный способ вызвать это?
Когда это происходит, выполнение запроса снова приводит к успеху, поэтому я действительно не беспокоюсь о том, что фактические данные или база данных постоянно повреждены. Некоторые из таблиц в запросе (вместе с их индексами) часто отбрасываются, воссоздаются и часто заселяются, поэтому я предполагаю, что это связано с этим.
Удаление NOLOCK - это моя долгосрочная проблема. Причина NOLOCK была там, в первую очередь, заключалась в том, что запросы настолько плохи, что они зашли в тупик с ежедневными транзакциями, поэтому NOLOCK был лентой для остановки тупиков (которые работали). Поэтому мне нужна ленточная помощь на полосе помощи, пока мы не сможем сделать постоянное решение.
Если бы я мог воспроизвести его с Hello World, я бы планировал, что, возможно, похлопывая ленточную помощь с работой меньше чем через час. Не удается выполнить поиск и замену NOLOCK , потому что я снова начну использовать тупики приложения, что для меня хуже чем случайная неудачная работа.
Использование исправленной изоляции моментальных снимков - это хорошая возможность - мне придется работать с нашей командой базы данных, чтобы получить более подробную информацию об этом. Часть нашей проблемы заключается в том, что у нас нет эксперта SQL Server для решения такого рода вещей, и я недостаточно понимаю уровни изоляции, чтобы сделать это изменение прямо сейчас.
1 ответ
Kendra предоставляет подробную информацию о преимуществах и рисках с использованием уровня изоляции READ_COMMITTED_SNAPSHOT.
- Этот уровень изоляции становится уровнем изоляции по умолчанию для кода базы данных.
- У вас должен быть только один пользователь в базе данных, чтобы внести изменения в уровень изоляции READ_COMMITTED_SNAPSHOT.
- Даже если вы используете изоляцию READ_COMMITTED_SNAPSHOT , вам все равно нужно удалить подсказки NOLOCK , так как они переопределяют значение по умолчанию.
- Некоторые из ваших кодов могут иметь проблемы, требующие лечения.
Несколько лет назад мы реализовали изоляцию READ_COMMITTED_SNAPSHOT в базе данных строго , страдающей блокировкой . Но как только мы изменили уровень изоляции, мы начали получать взаимоблокировки в нескольких критических областях.
Почему это произошло? Поскольку предыдущий уровень изоляции вызвал сильную блокировку, код мог «никогда» не достигнуть точки блокировки. Однако с READ_COMMITTED_SNAPSHOT, запросы могут продолжать двигаться вперед. Тем не менее, некоторый процент от ожидающих транзакций без ожидания начал блокировать.
К счастью, наш случай был быстро разрешен путем определения точек взаимоблокировки и корректировки индексов на нескольких таблицах, чтобы иметь более рациональный порядок столбцов. Это значительно сократило наши проблемы с фиксацией.
Помогите, не пойму почему при тестировании базы - при проверка регистра сведений "Версии объектов" на 30% выдает ошибку:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
HRESULT=80004005, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1
Нашла за какой день в этом регистре ошибка, пытаюсь просто прокрутить и просмотреть регистр за этот день и мне тут же выдает ошибку ту же ошибку. При очисте регистра за этот день тоже самое. что делать с базой.
Помогите плиз.
При попытке выгрузки базы средствами 1С выдало ошибку:
Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft SQL Server Native Client 10.0: Shared Memory Provider: С обоих концов канала отсутствуют процессы.
Перезагрузила, зашла в предприятие и просто за этот день пролистала и не сразу, а чуть позже появляется ошибка:
Конфликт блокировок при выполнении транзакции
Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
HRESULT=80004005, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1
сейчас запустила тестрирование через конфигуратор, если не поможет тогда как Михаил
Базу целиком? она не файловая и выгрузку получается могу сделать только с помощью SQL
а если можно подробно описать как сделать DBCC CHECKDB через скуль, никогда этого не делала.
SQL Server 2008
А можно подробное описание как сделать DBCC CHECKDB через скуль, никогда этого не делала.
SQL Server 2008
Я зашла в скуль, на базе правой кнопкой - новый запрос - и в поле справа наисала:DBCC CHECKDB (0, REPAIR_ALLOW_DATA_LOSS) и все? и просто выполнить?
Удалить ты не можешь, но при определенной версии SQL можно изменить уровень изоляции на SNAPSHOT. Правда, при этом будет эпизодически пухнуть tempdb.
Если не используется инкрементальное резервное копирование в SQL, стОит перевести recovery model БД в Simple
Значит так, очистила таблицу регистра сведений "Версии объектов" (пожертвовала ненужной информацией)прямо через таблицы скуля. и все заработало:) Тестирование и исправление прошло удачно. Придется историю изменения объектов в копии смотреть:(
Большое спасибо за советы и подсказки :)
В этой статье описаны ошибки, исправленные в 5 накопительный пакет обновления для Microsoft System Center 2012 R2 Operations Manager. Данная статья также содержит инструкции по установке для 5 накопительный пакет обновления для System Center 2012 R2 Operations Manager.
Ошибки, исправленные в этот накопительный пакет обновления
Operations Manager
Monitoringhost процесс завершает работу из-за ошибки привязки для службы каталогов Active Directory
Было сделано исправление для предотвращения Monitoringhost.exe сбоя при подключении в доменных службах Active Directory (AD DS). Трассировка стека от сбоя отображается ошибка «System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException».
RunAs учетные записи не могут быть изменены из-за исключения «указанное приведение является недопустимым»
Запуск от имени учетных записей могут распространяться только на выбранном компьютере через вкладку распространение свойств выполнения как учетной записи. При списан компьютером, который находится в списке рассылки от Operations Manager и открыл Запуск от имени учетной записи, будет получено следующее исключение и компьютеры не отображаются в списке:
"System.InvalidCastException": Указанное приведение недопустимо. в Microsoft.EnterpriseManagement.Monitoring.Internal.MonitoringObjectGenerated.get_Id()
Эта проблема решена, и исключение не возникает.
Приложение завершает работу после завершения поиска без отбора в конструкторе распределенных приложений
Чтобы убедиться в том, что консоль не аварийно завершить работу после завершения поиска без отбора в конструкторе распределенных приложений было сделано исправление.
MonitoringHost происходит сбой с исключением - System.OverflowException: значение было слишком велик или слишком мал для Int32
Отслеживаются изменения в объекты, используя EntityChangeLogId в таблице EntityChangelog и EntityChangeLogId, которые поддерживают в таблице как значение типа Int64. ManagedType таблиц, начинающиеся с MT_ * обратитесь к EntityChangeLogID. Код, который используется для вставки в таблицу ManagedType имеет тип данных Int32 вместо типа данных Int64. По достижении больше, чем лимит Int32 EntityChangeLogID исключение Фатальный сбой MonitoringHost. Это является фиксированной и MonitoringHost больше не завершает работу.
Технической поддержки для устранения неполадок сценариев PowerShell
При сборе трассировки для устранения неполадок сценариев PowerShell журналы не отображаются параметры, которые передаются сценариев PowerShell. Код был изменен в журнал этой информации, чтобы обеспечить простое устранение неполадок.
Рабочие мнениями через Operations Manager
Помощник по System Center повышена с многие возможности и rebranded как «Рабочие дополнительная информация». Дополнительные сведения о новой функции Операционного мнений . Название продукта обновляется в Operations Manager подключаемого модуля для ядра СУБД центр системы.
«Сброс базовой линии», «Pause базовой линии» и «Возобновить базовой линии» задачи завершиться неудачей, когда выполняются правила оптимизировать производительность коллекции
При возникновении этой проблемы появляется следующее исключение:
Microsoft.EnterpriseManagement.ContainerException: Контейнер не удалось найти компонент с именем «TaskRuntime» совместим с типом "Microsoft.EnterpriseManagement.ServiceDataLayer.ITaskRuntimeServiceInternal, Microsoft.EnterpriseManagement.DataAccessService.Core
Исключение возникает при изменении подписок, которые содержат объекты или удаленные мониторы
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Microsoft.EnterpriseManagement.Mom.Internal.UI.Controls.SourceChooserCriteriaItem.GetSources()
в Microsoft.EnterpriseManagement.Mom.Internal.UI.Controls.SourceChooserCriteriaItem.Search (CancelFlagWrapper cancelFlag)
Это зафиксировано не выдает исключение и отображения действующих правил и мониторов.
Не удается установить ширину столбца графического элемента
Событие 4506: Данных разорвано из-за слишком большой объем необработанных данных
Раздел реестра 1
Раздел реестра 2
Расположение в реестре: Службы Center\Health HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\System
Имя DWORD: Максимальное число ожидающих данных глобальной
Значение DWORD: nnnn
(Где nnnn — число элементов глобально. Это значение равно более 5120 при необходимости.)
Расположение в реестре: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HealthService\Parameters
Имя DWORD: Максимальное число ожидающих данных глобальной
Значение DWORD: nnnn
(Где nnnn — число элементов глобально. Это значение равно более 5120 при необходимости.)
Поддержка обработки тайм-ауты нагрузки хранилищ данных
Нагрузки хранилищ данных диспетчера операций создает события, такие как 31551, 31552, 31553 при вставке данных для нагрузки хранилищ данных проблем. Одна из причин, эти события происходят, из-за исключения SQL тайм-аута. Войдя таких событий, связанных с исключениями времени ожидания SQL журналы теперь также содержат сведения о том, как расширить эти ожидания. Можно прочитать подробнее об этих исключениях здесь.
Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных
При попытке вызвать функцию базы данных Operations Manager fn_AlertViewChangesкомпонентами, такими как Orchestrator, он может исключение «Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных». Инициируется лишний оператор NOLOCK в SQL SP. Это является фиксированной, как и любые сбои, вызванные это исключение.
$ScriptContext.Context не сохраняется значение в PowerShell графические элементы
PowerShell мини-приложений, использующих $ScriptContext.Context отображения пустой. Этому исправлению теперь сохраняет контекст.
Оценка версии оповещения
Пакет управления UNIX/Linux
Обновление агента UNIX/Linux для Operations Manager сбрасывает состояние глубокой наблюдения для серверов приложений JEE.
Эта проблема происходит для экземпляров сервера приложений Java «Глубокий мониторинг» включен. При обновлении агент UNIX/Linux для Operations Manager экземпляров не «Глубокий мониторинг» и требуют выполнения другой задачи Включить глубокий наблюдения пакета управления.
Rpcimap монитор для Red Hat Enterprise Linux 5 теперь отключена по умолчанию.
Red Hat Enterprise Linux 5.10 и более поздних версиях удаляет демон rpcimap по умолчанию, который присутствует в более ранних выпусках Red Hat Enterprise Linux 5. Критические оповещения создаются для службы rpcimap, которая не работает на Red Hat Enterprise Linux 5.10. Rpcimap монитор для Red Hat Enterprise Linux 5 теперь отключена по умолчанию. Тем не менее его можно снова включить с помощью переопределения в пакете управления.
Мониторинг в часовом поясе UTC + 13 (например, Окленд, Новая Зеландия с летнее время) приводит к «шаблон процесса наблюдения Unix» к сбою.
Предупреждение [scx.core.providers.provess_provider:266:2250:140361722332992] SCX_UnixProcess_Class_Provider: EnumerateInstances - формального аргумента «offsetFromUTC» является недопустимым: SCXRelativeTime: год = 0 месяцев = 0 дней = 0 часов = 0 минут = 780 мкс = 0 - [/ home/serviceb/ScxCore_R2URNext_Debian50_x64/pal/source/code/scxcorelib/pal/scxtime/absolute.cpp:856]
При использовании «scxadmin-журнал-поворот» программы, останавливает запись в журнал агента (/ var/opt/microsoft/scx/log/scx.log) после завершения поворота журнала.
При использовании программы scxadmin вместе с -Журнал-повернуть параметр, регистрация в /var/opt/microsoft/scx/log/scx.log не может возобновить не перезагрузка (scxadmin-перезагрузить).
Как получить и установить набор обновлений 5 для System Center 2012 R2 Operations Manager
Информация о скачивании
Пакеты обновлений для Operations Manager доступны из центра обновления Майкрософт или загрузка вручную.
Центр обновления Майкрософт
Чтобы получить и установить пакет обновления из центра обновления Майкрософт, выполните следующие действия на компьютере установлен компонент диспетчера операций.
На панели управления дважды щелкните Центр обновления Windows.
В окне центра обновления Windows щелкните Проверка в сети обновлений из центра обновления Майкрософт.
Выберите доступные важные обновления.
Установите накопительный пакет обновления, а затем нажмите кнопку ОК.
Загрузка пакетов обновлений вручную
Посетите следующий веб-сайт вручную загрузить обновления из каталога Центра обновления Майкрософт:
Загрузите пакет обновления Operations Manager.
Замечания по установке
Этот накопительный пакет обновления можно загрузить из центра обновления Майкрософт на следующих языках:
Помогите, не пойму почему при тестировании базы - при проверка регистра сведений "Версии объектов" на 30% выдает ошибку: Конфликт блокировок при выполнении транзакции: Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных. Нашла за какой день в этом регистре ошибка, пытаюсь просто прокрутить и просмотреть регистр за этот день и мне тут же выдает ошибку ту же ошибку. При очисте регистра за этот день тоже самое. что делать с базой. Помогите плиз.
При попытке выгрузки базы средствами 1С выдало ошибку: Сеанс работы завершен администратором. по причине: Соединение с сервером баз данных разорвано администратором Microsoft SQL Server Native Client 10.0: Shared Memory Provider: С обоих концов канала отсутствуют процессы.
Перезагрузила, зашла в предприятие и просто за этот день пролистала и не сразу, а чуть позже появляется ошибка: Конфликт блокировок при выполнении транзакции Microsoft SQL Server Native Client 10.0: Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
сейчас запустила тестрирование через конфигуратор, если не поможет тогда как Михаил Базу целиком? она не файловая и выгрузку получается могу сделать только с помощью SQL
а если можно подробно описать как сделать DBCC CHECKDB через скуль, никогда этого не делала. SQL Server 2008
А можно подробное описание как сделать DBCC CHECKDB через скуль, никогда этого не делала. SQL Server 2008 Я зашла в скуль, на базе правой кнопкой - новый запрос - и в поле справа наисала:DBCC CHECKDB (0, REPAIR_ALLOW_DATA_LOSS) и все? и просто выполнить?
SQL Server Database Engine не удается продолжить выполнение запроса, поскольку приложение пытается считать данные, обновленные или удаленные другой транзакцией. Очередь использует подсказку блокировки NOLOCK или уровень изоляции транзакции READ UNCOMMITTED. Как правило, доступ к данным, которые изменяются другой операцией, запрещен из-за наложенной на них блокировки. Однако подсказка блокировки NOLOCK и уровень изоляции транзакции READ UNCOMMITTED позволили запросу считать данные, заблокированные другой транзакцией. Это называется «грязным» чтением, поскольку таким образом можно считать значения, которые еще не были зафиксированы и могут быть изменены. Эта ошибка отменяет запрос. Отправьте запрос повторно или удалите подсказку блокировки NOLOCK. Удалить ты не можешь, но при определенной версии SQL можно изменить уровень изоляции на SNAPSHOT. Правда, при этом будет эпизодически пухнуть tempdb.
Если не используется инкрементальное резервное копирование в SQL, стОит перевести recovery model БД в Simple
Значит так, очистила таблицу регистра сведений "Версии объектов" (пожертвовала ненужной информацией)прямо через таблицы скуля. и все заработало:) Тестирование и исправление прошло удачно. Придется историю изменения объектов в копии смотреть:( Большое спасибо за советы и подсказки :)
Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 как один загружаемый файл. Так как исправления являются накопительными, каждый выпуск содержит все исправления и все исправления безопасности, которые были включены в предыдущие 2008 SQL Server исправления выпуска.
Проблемы
Ошибка msg 605, 21 уровень состояние 3, строка 1Attempt для выборки логической страницы (1:225) в базе данных 2. Он принадлежит к 281474980315136 единицы размещения не для 504403158513025024.
Msg 601, уровень 12, состояние 3, процедура procedure имя, номер строкине удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
Запрос конструкцию, которая может приводить к этим ошибкам выглядит следующим образом:
Решение
Исправление этой уязвимости первого выпуска накопительного обновления 3. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008, щелкните следующий номер статьи базы знаний Майкрософт:
960484 Накопительный пакет обновления 3 для SQL Server 2008Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
956909 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008После установки этот накопительный пакет обновления, необходимо включить флаг трассировки 4135. Чтобы сделать это, можно добавить -T4135 параметра запуска. Или можно использовать инструкцию dbcc traceon(4135) для конкретного сеанса.
Обходное решение
Чтобы обойти эту проблему, добавьте столбец с кластеризованного первичного ключа и свойство identity во временной таблице. Например выполните следующую инструкцию, чтобы изменить временной таблицы:
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Дополнительная информация
960484 Накопительный пакет обновления 3 для SQL Server 2008
Сведения о SQL Server 2008 R2 анализатора соответствия Рекомендациям
Ссылки
Правило SQL Server 2008 R2 анализатора соответствия Рекомендациям
Примечание. Можно включить флаг трассировки 4135 или флаг трассировки 4199 Включение данного исправления. Флаг трассировки 4135 был представлен в накопительный пакет обновления 3 для SQL Server 2008. Флаг трассировки 4135 доступен также в Пакет обновления 1 для SQL Server 2008, Пакет обновления 2 для SQL Server 2008 и SQL Server 2008 R2. Флаг трассировки 4199 был введен в накопительный пакет обновления 7 для SQL Server 2008, накопительный пакет обновления 7 для SQL Server 2008 Пакет обновления 1 и накопительный пакет обновления 1 для SQL Server 2008 R2. Дополнительные сведения о флаге трассировки 4199 щелкните следующий номер статьи базы знаний Майкрософт:
974006 Флаг трассировки 4199 добавляется к элементу управления, несколько изменений оптимизатор запросов, сделанных в группе несколько флагов трассировки Так как исправление для этой проблемы включает в себя сочетание построения исправления и флага трассировки, чтобы активировать его, предоставляются вместе в следующей таблице показаны различные сценарии и рекомендуемые действия для выполнения для каждого сценария.Дополнительные сведения о последней версии сборок SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
957826 Где найти сведения о последней версии SQL Server формирует
Ссылки
Дополнительные сведения о списке сборок, доступных после выпуска SQL Server 2008 щелкните следующий номер статьи базы знаний Майкрософт:
956909 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008Дополнительные сведения о добавочных модель обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
935897 Модель обслуживания изменений, используемая рабочей группой SQL Server, предоставляет модель ISM для распространения исправлений обнаруженных проблемДополнительные сведения о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL ServerДля получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт
Читайте также: