S’applique à
SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup

Microsoft distribue les correctifs Microsoft SQL Server 2008 R2 en tant que fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2.

Symptômes

Prenons l’exemple du scénario suivant :

  • Vous disposez d’un modèle et d’une entité Master Data Services (MDS) qui ont un attribut basé sur un domaine dans Microsoft SQL Server 2008 R2. L’attribut basé sur un domaine est conçu pour faire référence au même attribut.Par exemple, vous avez une entité Employee qui a un attribut ManagerName. L’attribut ManagerName fait référence à la même entité Employee elle-même.Remarque Un responsable est également une sorte d’employé.

  • Une hiérarchie dérivée est définie sur un attribut pour afficher la relation parent/enfant récursive pour l’attribut basé sur un domaine.

  • Vous chargez des valeurs de données qui contiennent une ou plusieurs références circulaires à la table de mise en lots MDS. Ce comportement provoque une référence circulaire, et le premier nœud de l’attribut ne fait pas partie du cercle.Par exemple, le modèle de données suivant montre une référence circulaire. Toutefois, la valeur membre Member1 ne fait pas partie du cercle :

    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)
  • Vous utilisez l’une des méthodes suivantes pour charger des valeurs de données dans l’entité à l’aide du processus intermédiaire MDS :

    • Exécutez Exec [mdm]. Procédure [udpStagingSweep] en utilisant les paramètres nécessaires pour traiter les données intermédiaires.

    • Cliquez sur Gestion de l’intégration pour accéder à la page d’accueil du site web MDS. Dans la page Importer l’exportation , sous l’en-tête de section Enregistrements intermédiaires non regroupés , cliquez sur l’icône d’engrenage pour traiter les enregistrements d’un modèle et d’une version spécifiques.

Dans ce scénario, le processus en arrière-plan pendant le processus intermédiaire peut rencontrer une boucle infinie lorsque le processus en arrière-plan appelle en interne le [mdm]. Procédure [udpMemberRecursiveCircularCheck].

Cause

Ce problème se produit parce que les procédures udpStagingSweep et udpStagingMemberAttributeSave appellent la procédure udpMemberRecursiveCircularCheck une fois pour chaque ligne intermédiaire. Ce comportement doit case activée une valeur d’attribut basée sur un domaine et retourne une erreur si la ligne intermédiaire provoque une référence circulaire avec les données existantes. Une fois toutes les lignes intermédiaires vérifiées, vous recevez les résultats suivants :

  • Les lignes intermédiaires sans erreur sont appliquées.

  • Les lignes intermédiaires avec des erreurs sont notées avec un code d’erreur.

Si les conditions décrites dans la section « Symptômes » sont vraies, [mdm]. La procédure [udpMemberRecursiveCircularCheck] effectue une boucle indéfinie jusqu’à ce que les ressources du serveur soient épuisées ou qu’un délai d’attente se produise.

Résolution

Informations sur les mises à jour cumulatives

SQL Server 2008 R2 Service Pack 1

Le correctif pour ce problème a été publié pour la première fois dans la mise à jour cumulative 4. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2008 R2 SP1, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :

2633146 Package de mise à jour cumulative 4 pour SQL Server 2008 R2 Service Pack 1Note Étant donné que les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2 SP1. Nous vous recommandons d’appliquer la version la plus récente du correctif qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

2567616 Les builds SQL Server 2008 R2 publiées après SQL Server 2008 R2 Service Pack 1

État

Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Solution de contournement 

Pour contourner ce problème, appliquez l'une des méthodes suivantes :

  • Pour éviter le problème, procédez comme suit :

    1. Passez en revue manuellement les valeurs de données de membre qui sont insérées dans la table de mise en lots avant d’exécuter le processus intermédiaire.

    2. Assurez-vous que toutes les valeurs de membre pour les attributs basés sur un domaine ne contiennent pas de références circulaires décrites dans la section « Symptômes »

  • Lorsque le problème décrit dans la section « Symptômes » se produit, procédez comme suit pour le corriger :

    1. Identifiez la session qui s’exécute dans la boucle infinie.

    2. Arrêtez la session pour arrêter la boucle.

    3. Supprimez les valeurs de référence circulaires de la table intermédiaire avant que la référence circulaire ne soit traitée à nouveau.

Remarques

  • Pour identifier la session à arrêter, utilisez l’une des méthodes suivantes :

    • Utilisez un moniteur d’activité dans Microsoft SQL Server Management Studio.

    • Sélectionnez dans sys.sysprocesses ou sys.dm_exec_requests vue de gestion dynamique (DMV) pour identifier les sessions qui fonctionnent à l’intérieur de la base de données MDS dans laquelle le processeur et le temps s’incrémentent rapidement. Assurez-vous que la requête actuelle qui s’exécute sur la session correspond aux noms de procédure décrits dans la section « Cause ».

  • Pour identifier la procédure en cours d’exécution pour les sessions, utilisez l’une des méthodes suivantes :

    • Cliquez avec le bouton droit sur le menu Détails de chaque processus dans la liste des processus du moniteur d’activité.

    • Utilisez l’un des paramètres suivants :

      • Commande DBCC INPUTBUFFER (spid) avec l’ID de session.

      • La fonction SELECT * FROM sys.dm_exec_sql_text(sqlhandle) et le paramètre de handle SQL correspondant lorsque vous utilisez la sortie DMV.

Références

Pour plus d’informations sur l’ouverture d’un moniteur d’activité dans SQL Server Management Studio, visitez le site web MSDN suivant :

Comment ouvrir un moniteur d’activité dans SQL Server Management StudioPour plus d’informations sur la syntaxe KILL, visitez le site web MSDN suivant :

Informations générales sur la syntaxe KILLPour plus d’informations sur la DMV sys.dm_exec_requests, visitez le site web MSDN suivant :

Informations générales sur la DMV sys.dm_exec_requestsPour plus d’informations sur la DMV sys.dm_exec_sql_text, visitez le site web MSDN suivant :

Informations générales sur la vue DMV sys.dm_exec_sql_textPour plus d’informations sur la commande DBCC INPUTBUFFER, visitez le site web MSDN suivant :

Informations générales sur la commande DBCC INPUTBUFFERPour plus d’informations sur le modèle de maintenance incrémentielle pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article dans la Base de connaissances Microsoft :

935897 Un modèle de maintenance incrémentielle est disponible auprès de l’équipe SQL Server pour fournir des correctifs logiciels pour les problèmes signalésPour plus d’informations sur le schéma de nommage des mises à jour SQL Server, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :

822499 Nouveau schéma de nommage pour microsoft SQL Server packages de mise à jour logiciellePour plus d’informations sur la terminologie des mises à jour logicielles, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :

824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.