Impossible de créer un package ou une application de mise à jour logicielle après le transfert de la base de données de site

Cet article fournit une solution pour le problème que vous ne pouvez pas créer un groupe de mises à jour logicielles, un package de mise à jour logicielle ou une application après avoir déplacé la base de données du site SQL Server du gestionnaire de configuration.

Version du produit d’origine :   Gestionnaire de configuration Microsoft System Center 2012
Numéro de la base de connaissances initiale :   2709082

Symptômes

Une fois que vous avez déplacé la base de données du site du gestionnaire de configuration de SQL Server sur un autre lecteur, puis que vous essayez de créer un groupe de mises à jour logicielles, un package de mise à jour logicielle ou une application, l’opération échoue et ces entrées de journal sont consignées dans le fichier SMSProv. log :

*** ** * Erreur SQL inconnue ! Fournisseur SMS 14-03-2012 07:56:47 2016 (0x07E0)
*~*~** * Erreur SQL inconnue ! ThreadID : 2016, DbError : 50000, gravité : 16 ~ * ~ * SMS Provider 14-03-2012 07:56:47 2016 (0x07E0)
[24 000] [0] [Microsoft] [SQL Server Native Client 10.0] État de curseur non valide fournisseur SMS 14-03-2012 07:56:48 2016 (0x07E0)
*~*~ [24000] [0] [Microsoft] [SQL Server Native Client 10.0] État de curseur non valide * * * erreur SQL inconnue ! ThreadID : 2016, DbError : 0, gravité : 0 ~ * ~ * SMS Provider 14-03-2012 07:56:48 2016 (0x07E0)

Le générateur de profils SQL Server fournit les détails supplémentaires suivants :

Une erreur s’est produite dans Microsoft .NET Framework lors de la tentative de chargement de l’ID d’assembly 65539. Les ressources du serveur sont peut-être insuffisantes ou l’assembly ne peut pas être approuvé avec PERMISSION_SET = EXTERNAL_ACCESS ou unsafe. Exécutez à nouveau la requête ou consultez la documentation pour savoir comment résoudre les problèmes d’approbation d’assembly. Pour plus d’informations sur cette erreur :
System. IO. FileLoadException : impossible de charger le fichier ou l’assembly’cryptoutility, version = 5.0.0.0, culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ou une de ses dépendances. Une erreur liée à la sécurité s’est produite. (Exception à partir de HRESULT : 0x8013150A)
System. IO. FileLoadException :
sur System. Reflection. assembly. _nLoad (AssemblyName fileName, String CodeBase, Evidence assemblySecurity, assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
sur System. Reflection. assembly. InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
sur System. Reflection. assembly. InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
sur System. Reflection. assembly. Load (String assemblyString)

Cause

Ce problème peut se produire si les fichiers MDF et LDF de la base de données du site SQL Server sont déplacés vers un autre lecteur. Par exemple, ce problème peut se produire si la base de données du site gestionnaire de configuration est créée sur C:\Program files\MSSQL server\data , et que les fichiers MDF et LDF sont déplacés vers D:\CM2012DB pour économiser de l’espace.

Notes

Il s’agit d’une opération SQL Server prise en charge. Pour plus d’informations, voir Move a Database using Detach and attach (Transact-SQL).

Ce problème se produit car la propriété de base de données fiable de la base de données de site définie sur activé par défaut est réinitialisée à désactivé lorsque vous détachez et rattachez la base de données.Lorsque la base de données n’est pas configurée de sorte que la propriété soit définie sur on, <ConfigMgr_Install>\bin\x64\CryptoUtility.dll ne se charge pas dans SQL Server et vous recevez le message d’erreur État du curseur non valide mentionné dans la section symptômes.

Résolution

Pour résoudre ce problème, procédez comme suit :

  1. Réinitialisez manuellement la propriété sur on en exécutant cette commande sur votre base de données du gestionnaire de configuration :

     ALTER DATABASE <ConfigMgr DB>
     SET TRUSTWORTHY ON
    
  2. Assurez-vous que la base de données qui a été déplacée appartient au compte administrateur système.

  3. Assurez-vous que la valeur de niveau d’isolement est définie sur READ_COMMITTED_SNAPSHOT. Pour vérifier cette valeur, exécutez la commande suivante :

     DBCC USEROPTIONS
    
  4. Si la valeur niveau d’isolement est définie sur autre que la capture instantanée de lecture validée, exécutez les commandes suivantes dans l’ordre indiqué :

    ALTER DATABASE <ConfigMgr DB>
    SET ALLOW_SNAPSHOT_ISOLATION ON
    
    ALTER DATABASE <ConfigMgr DB>
    SET READ_COMMITTED_SNAPSHOT ON
    

Notes

Vous devrez peut-être modifier la base de données SQL Server en mode mono-utilisateur avant d’exécuter les commandes de l’étape 4. Pour plus d’informations sur le détachement et l’attachement d’une base de données dans SQL Server, voir détacher et attacher une base de données (SQL Server).

Informations supplémentaires

Une trace iDNA (voyages temporel) du processus SQL Server affiche l’exception suivante :

Nombre d’exceptions de ce type : 3
Exception MethodTable : 000007fef2524e30
Objet exception : 0000000201027798
Type d’exception : System. IO. FileLoadException
Message : impossible de charger le fichier ou l’assembly’cryptoutility, version = 5.0.0.0, culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ou une de ses dépendances. Une erreur liée à la sécurité s’est produite. (Exception à partir de HRESULT : 0x8013150A)
P :System.exception.InnerException <none>
StackTrace (généré) :
 Fonction IP SP
00000000204F8DC0 0000000000000001
System. Reflection. assembly. _nLoad (System. Reflection. AssemblyName, System. String,
System. Security. Policy. Evidence, System. Reflection. assembly, System. Threading. StackCrawlMark ByRef, Boolean, Boolean)
00000000204F8DC0 000007FEF23DBF61
System. Reflection. assembly. InternalLoad (System. Reflection. AssemblyName, System. Security. Policy. Evidence, System. Threading. StackCrawlMark ByRef, Boolean)
00000000204F8E50 000007FEF23DC127 System. Reflection. assembly. InternalLoad (System. String, System. Security. Policy. Evidence, System. Threading. StackCrawlMark ByRef, Boolean)
00000000204F8EB0 000007FEF2443A54 System. Reflection. assembly. Load (System. String)
00000000204F8EF0 000007FF002D9FF7
System. Data. SqlServer. Internal. SqlAppDomain. LoadRawAssembly (Char *, Int32, IntPtr ByRef,
System. Data. SqlServer. Internal. EClrReturnCode ByRef