Корпорація Майкрософт розповсюджує виправлення Microsoft SQL Server 2008 R2 як один файл, який можна завантажити. Оскільки виправлення сукупні, кожен новий випуск містить усі виправлення та всі виправлення системи безпеки, які входили в попередній випуск виправлення SQL Server 2008 R2.
Ознаки
Розглянемо такий сценарій:
-
У вас є модель Master Data Services (MDS) і сутність, яка має атрибут на основі домену в Microsoft SQL Server 2008 R2. Атрибут на основі домену призначено для самостійного посилання на той самий атрибут.Наприклад, у вас є сутність "Працівник", яка має атрибут ManagerName. Атрибут ManagerName посилається на саму сутність "Працівник".Примітка. Керівник – це також тип працівника.
-
Є похідна ієрархія, визначена в атрибуті для відображення рекурсивного батьківського або дочірнього зв'язку для атрибута на основі домену.
-
Завантажуються значення даних, які містять одне або кілька циклічного посилання на проміжну таблицю 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. На сторінці Імпорт експорту в заголовку розділу Unbatched Staging Records (Незв'язані проміжні записи ) клацніть піктограму триба , щоб обробити записи для певної моделі та версії.
-
У цьому випадку фоновий процес під час проміжного процесу може зіткнутися нескінченний цикл, коли фоновий процес внутрішньо викликає [mdm]. [udpMemberRecursiveCircularCheck] procedure.
Причина
Ця проблема виникає тому, що процедури udpStagingSweep і udpStagingMemberAttributeSave викликають процедуру udpMemberRecursiveCircularCheck один раз для кожного проміжного рядка. Ця поведінка має перевірити значення атрибута на основі домену та повертає помилку, якщо проміжний рядок викликає циклічне посилання разом із наявними даними. Після перевірки всіх проміжних рядків з'являться такі результати:
-
Проміжні рядки без помилок застосовуються.
-
Проміжні рядки з помилками позначено кодом помилки.
Якщо умови, описані в розділі "Ознаки", істинні, [mdm]. [udpMemberRecursiveCircularCheck] цикли процедур на невизначений період, доки серверні ресурси не вичерпаються, або час очікування не мине.
Спосіб вирішення
Сукупні відомості про оновлення
SQL Server 2008 R2 із пакетом оновлень 1
Виправлення цієї проблеми вперше випущено в сукупному пакеті оновлень 4. Щоб отримати додаткові відомості про те, як отримати цей пакет сукупний пакет оновлень для SQL Server 2008 R2 SP1 клацніть номер статті в базі знань Microsoft Knowledge Base:
2633146 Сукупний пакет оновлень 4 для SQL Server 2008 R2 з пакетом оновлень 1Note, оскільки збірки сукупні, кожен новий випуск виправлення містить усі виправлення системи безпеки, які входили в попередній випуск виправлення SQL Server 2008 R2 SP1. Радимо застосувати останній випуск виправлення, який містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2567616 Збірки SQL Server 2008 R2, випущені після випуску SQL Server 2008 R2 з пакетом оновлень 1
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Інші способи вирішення
Щоб вирішити цю проблему, скористайтесь одним із запропонованих нижче способів.
-
Щоб запобігти цій проблемі, виконайте такі дії:
-
Перевірте вручну значення даних елементів, які вставляються в проміжну таблицю, перш ніж запустити проміжний процес.
-
Переконайтеся, що всі значення-члени для будь-яких атрибутів на основі домену не містять циклічне посилання, описані в розділі "Ознаки"
-
-
Коли виникає проблема, описана в розділі "Ознаки", виконайте такі дії, щоб вирішити цю проблему:
-
Визначте сеанс, який виконується в безкінечному циклі.
-
Вбийте сеанс, щоб зупинити цикл.
-
Видаліть значення циклічного посилання з проміжної таблиці перед повторною обробкою циклічного посилання.
-
Примітки
-
Щоб визначити, який сеанс вбити, скористайтеся одним із наведених нижче способів.
-
Використання монітора активності в 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 під час використання виводу DMV.
-
-
Посилання
Щоб отримати додаткові відомості про те, як відкрити монітор активності в SQL Server Management Studio відвідайте такий веб-сайт MSDN:
Відкриття монітора активності в SQL Server Management StudioЩоб отримати додаткові відомості про синтаксис KILL відвідайте такий веб-сайт MSDN:
Загальні відомості про синтаксис KILLЩоб отримати додаткові відомості про sys.dm_exec_requests DMV відвідайте такий веб-сайт MSDN:
Загальні відомості про DMV sys.dm_exec_requestsЩоб отримати додаткові відомості про sys.dm_exec_sql_text DMV відвідайте такий веб-сайт MSDN:
Загальні відомості про DMV sys.dm_exec_sql_textЩоб отримати додаткові відомості про команду DBCC INPUTBUFFER відвідайте такий веб-сайт MSDN:
Загальні відомості про команду DBCC INPUTBUFFERЩоб отримати додаткові відомості про модель інкрементного обслуговування для SQL Server клацніть номер статті в базі знань Microsoft Knowledge Base:
935897 Інкрементна модель обслуговування доступна в команді SQL Server для доставки виправлень для повідомлених проблем. Щоб отримати додаткові відомості про схему іменування для оновлень SQL Server, клацніть номер статті в базі знань Microsoft Knowledge Base:
822499 Нова схема іменування для пакетів оновлення програмного забезпечення Microsoft SQL Server Щоб отримати додаткові відомості про термінологію оновлення програмного забезпечення, клацніть номер статті в базі знань Microsoft Knowledge Base:
824684 Опис стандартної термінології, яка використовується для опису оновлень програмного забезпечення Microsoft