Symptômes
Partez du principe que vous utilisez un fournisseur de stockage d’objets BLOB à distance personnalisé conjointement avec Runtime .NET Framework 4,0 pour stocker des blobs à distance pour Microsoft SharePoint 2013. Lorsque vous essayez d’exécuter le nettoyage de la mémoire qui appelle en interne Microsoft. Data. SqlRemoteBlobs. Maintainer. exe, vous recevez le message d’erreur suivant lors du nettoyage de la mémoire :
Démarrage de tâches de maintenance. Démarrage du nettoyage de la mémoire. Commencer l’analyse de référence. <> de temps : Err : 0 ::: AssemblyLoad ::: une erreur s’est produite lors de la lecture du fichier d’extension xxxx. RemoteBlobStoreProvider. dll. <temps> : Err : 0 ::: AssemblyLoad ::::. BadImageFormatException : cet assembly est généré par un Runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé. (Exception de HRESULT : 0x8013101B) <temps> : erreur : 0 ::: AssemblyLoad ::: sur System. Reflection. assembly. NLoadFile (String path, Evidence evidence) <Time> : Err : 0 ::: AssemblyLoad ::: at System. Reflection. assembly. LoadFile (chemin d’accès chaîne) <Time> : Err : 0 ::: AssemblyLoad :::
L’outil de mise à jour est compilé à l’aide du .NET Framework 2,0 Runtime et ne peut pas charger d’assemblys basés sur le .NET Framework 4,0 pour l’énumération des objets BLOB et du nettoyage de la mémoire. Pour toute application .NET Framework, vous pouvez utiliser le fichier de configuration de l’application et ajouter la balise supportedRuntime pour utiliser la version la plus récente de .NET Framework. Le fichier de configuration du composant Maintainer est Microsoft. Data. SqlRemoteBlobs. MaintainerConfig. xml, comme le montre l’exemple suivant :
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Si vous essayez d’exécuter le nettoyage de la mémoire, Microsoft. Data. SqlRemoteBlobs. Maintainer. exe rencontre une exception de violation d’accès, comme suit :
System. AccessViolationException : tentative de lecture ou d’écriture de mémoire protégée. Il s’agit souvent d’indiquer que la mémoire est endommagée. à l’adresse System. Text. StringBuilder. AppendFormat (fournisseur IFormatProvider, format de chaîne, objet [] args), Microsoft. Data. SqlRemoteBlobs. InformationUtilities. InformationDetails () dans Microsoft. Data. BlobStores. LogProvider. CreateHeaderInformation () dans Microsoft. Data. BlobStores. LogProvider. adverse (LogLevel logLevel) dans Microsoft. Data. BlobStores. DebugPrint. InitializeProviders (). BlobStores. DebugPrint. Initialize (booléen initializeProviders) à Microsoft. Data. BlobStores. DebugPrint. WriteLine (opération OperationType, le niveau LogLevel, Int32 blobStoreId, exception d’exception, message de chaîne, objet [] ARG) dans Microsoft. Data. SqlRemoteBlobs. Maintainers. Maintainer. MainInternal () dans Microsoft. Data. SqlRemoteBlobs. promise à jour.
Cause
La première exception se produit parce que l’outil Maintainer est compilé à l’aide du .NET Framework 2,0. L’outil ne peut pas charger les assemblys basés sur .NET Framework 4,0. L’exception de violation d’accès se produit lorsque vous essayez d’initialiser les fournisseurs de journalisation pour Microsoft. Data. SqlRemoteBlobs. Maintainer. exe.
Résolution
Le correctif de ce problème est disponible dans le téléchargement du Pack de fonctionnalités le plus récent pour RBS. msi. Si vous utilisez la solution de contournement suggérée, vous pouvez supprimer ou activer les balises relatives à la journalisation et conserver la balise supportRuntime .Remarque Vous pouvez réinstaller RBS en utilisant le nouveau RBS. msi pour appliquer le correctif sans appliquer la mise à jour.
Télécharger Microsoft SQL server 2014 Service Pack 1 (SP1) Télécharger le Feature Pack 3 (SP3) microsoft SQL Server 2012 Service Pack 3 (SP3)
Solution de contournement
Pour contourner ce problème, ajoutez la configuration supplémentaire suivante au fichier de configuration avec la balise supportedRuntime . Ces balises désactivation de la fonctionnalité de journalisation de l’outil de maintenance, car l’exception est levée lors de l’initialisation des fournisseurs de journaux.
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <RemoteBlobStorage> <Logging> <add key="ConsoleLog" value="0" /> <add key="FileLog" value="0" /> <add key="CircularLog" value="0" /> <add key="EventViewerLog" value="0" /> <add key="DatabaseTableLog" value="0" /> </Logging> </RemoteBlobStorage>
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.