Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 в виде одного скачиваемого файла. Так как исправления являются накопительными, каждый новый выпуск содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений SQL Server 2008 R2.
Проблемы
Рассмотрим следующий сценарий.
-
У вас есть модель Master Data Services (MDS) и сущность с атрибутом на основе домена в Microsoft SQL Server 2008 R2. Атрибут на основе домена предназначен для самостоятельной ссылки на один и тот же атрибут.Например, у вас есть сущность Employee с атрибутом ManagerName. Атрибут ManagerName ссылается на ту же сущность Employee.Примечание. Руководитель также является своего рода сотрудником.
-
Существует производная иерархия, определяемая атрибутом для отображения рекурсивного отношения "родители-потомки" для атрибута на основе домена.
-
Вы загружаете значения данных, содержащие одну или несколько циклических ссылок на промежуточную таблицу MDS. Это поведение вызывает циклическую ссылку, и первый узел в атрибуте не является частью круга.Например, в следующем шаблоне данных показана циклическая ссылка. Однако значение члена Member1 не является частью круга:
Member1 --manager attribute--> Member2 --manager attribute--> Member3 --manager attribute--> Member2 --manager attribute--> Member3
insert into mdm.tblStgMemberAttribute(ModelName, EntityName, MemberType_ID, MemberCode, AttributeName, AttributeValue, Status_ID)Values ('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member3', 0),('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member1', 0)('EntityTest', 'ModelTest', 1, 'Member1', 'Manager', 'NULL', 0)
-
Для загрузки значений данных в сущность с помощью промежуточного процесса MDS используется один из следующих методов:
-
Запустите Exec [mdm]. Процедура [udpStagingSweep] с использованием необходимых параметров для обработки промежуточных данных.
-
Щелкните Управление интеграцией , чтобы перейти на домашнюю страницу веб-сайта MDS. На странице Импорт экспорта в заголовке раздела Несмешанные промежуточные записи щелкните значок шестеренки , чтобы обработать записи для определенной модели и версии.
-
В этом сценарии фоновый процесс во время промежуточного процесса может столкнуться с бесконечным циклом, когда фоновый процесс внутренне вызывает [mdm]. Процедура [udpMemberRecursiveCircularCheck].
Причина
Эта проблема возникает из-за того, что процедуры udpStagingSweep и udpStagingMemberAttributeSave вызывают процедуру udpMemberRecursiveCircularCheck один раз для каждой промежуточной строки. Это поведение должно проверка значение атрибута на основе домена и возвращает ошибку, если промежуточная строка вызывает циклическую ссылку вместе с существующими данными. После проверки всех промежуточных строк вы получите следующие результаты:
-
Применяются промежуточные строки без ошибок.
-
Промежуточные строки с ошибками отмечаются с кодом ошибки.
Если условия, описанные в разделе "Симптомы", выполняются, значение [mdm]. Процедура [udpMemberRecursiveCircularCheck] циклически выполняется до тех пор, пока не будут исчерпаны ресурсы сервера или не истекло время ожидания.
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 R2 с пакетом обновления 1 (SP1)
Исправление этой проблемы было впервые выпущено в накопительном пакете обновления 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 с пакетом обновления 1 (SP1), щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
2633146 Накопительный пакет обновления 4 для SQL Server 2008 R2 с пакетом обновления 1Примечайте. Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2 с пакетом обновления 1 (SP1). Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2567616 Сборки SQL Server 2008 R2, выпущенные после SQL Server 2008 R2 с пакетом обновления 1 (SP1)
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Обходное решение
Чтобы обойти эту проблему, воспользуйтесь одним из описанных ниже методов.
-
Чтобы предотвратить проблему, выполните следующие действия.
-
Перед запуском промежуточного процесса вручную просмотрите значения данных членов, которые вставляются в промежуточную таблицу.
-
Убедитесь, что все значения элементов для атрибутов на основе домена не содержат циклических ссылок, описанных в разделе "Симптомы"
-
-
При возникновении проблемы, описанной в разделе "Симптомы", выполните следующие действия, чтобы устранить проблему:
-
Определите сеанс, выполняющийся в бесконечном цикле.
-
Завершите сеанс, чтобы остановить цикл.
-
Удалите значения циклической ссылки из промежуточной таблицы перед повторной обработкой циклической ссылки.
-
Примечания.
-
Чтобы определить, какой сеанс следует выполнить, используйте один из следующих методов:
-
Используйте монитор действий в Microsoft SQL Server Management Studio.
-
Выберите из sys.sysprocesses или sys.dm_exec_requests динамического административного представления (DMV), чтобы определить сеансы, работающие в базе данных MDS, в которых ЦП и время быстро увеличиваются. Убедитесь, что текущий запрос, выполняемый в сеансе, соответствует именам процедур, описанным в разделе "Причина".
-
-
Чтобы определить текущую процедуру для сеансов, используйте один из следующих методов:
-
Щелкните правой кнопкой мыши меню Сведения для каждого процесса в списке процессов мониторинга действий.
-
Используйте один из следующих параметров:
-
Команда DBCC INPUTBUFFER (spid) вместе с идентификатором сеанса.
-
Функция SELECT * FROM sys.dm_exec_sql_text(sqlhandle) вместе с соответствующим параметром дескриптора SQL при использовании выходных данных динамического административного представления.
-
-
Ссылки
Дополнительные сведения об открытии монитора активности в SQL Server Management Studio см. на следующем веб-сайте MSDN:
Открытие монитора действий в SQL Server Management StudioДополнительные сведения о синтаксисе KILL см. на следующем веб-сайте MSDN:
Общие сведения о синтаксисе KILLДополнительные сведения о динамическом административном представлении sys.dm_exec_requests см. на следующем веб-сайте MSDN:
Общие сведения о динамическом административном представлении sys.dm_exec_requestsДополнительные сведения о динамическом административном представлении sys.dm_exec_sql_text см. на следующем веб-сайте MSDN:
Общие сведения о динамическом административном представлении sys.dm_exec_sql_textДополнительные сведения о команде DBCC INPUTBUFFER см. на следующем веб-сайте MSDN:
Общие сведения о команде DBCC INPUTBUFFERЧтобы получить дополнительные сведения о модели добавочного обслуживания для SQL Server, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
935897 Модель добавочного обслуживания доступна в команде SQL Server для доставки исправлений для обнаруженных проблем. Дополнительные сведения о схеме именования для обновлений SQL Server щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
822499 Новая схема именования для пакетов обновлений программного обеспечения Microsoft SQL Server. Дополнительные сведения о терминологии обновлений программного обеспечения щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт