Sur SQL Server 2008, j'essaie d'enregistrer un assembly qui semble référencer uniquement le supported libraries. Voici le code T-SQL que j'utilise pour enregistrer l'assemblée:Pourquoi SQL Server n'inscrit-il pas mon assembly en tant que SAFE?
create assembly MySpatial from 'c:\Spatial.dll'
Il en résulte l'erreur suivante:
Msg 6509, Level 16, State 31, Line 1 An error occurred while gathering metadata from assembly 'Spatial' with HRESULT 0x80004005.
Cependant, si j'ajoute with permission_set=unsafe
, puis SQL exécutera la commande avec succès. Comment puis-je savoir pourquoi l'erreur s'est produite ou pourquoi mon assembly doit être enregistré comme non sécurisé?
J'ai le même problème avec mon assemblage. Il n'y a pas de champs/propriétés statiques non-'readonly' et il ne fait référence qu'aux safe mscorlib.dll et' System.dll', tous deux v2. J'ai essayé de copier une partie limitée des classes dans un fichier séparé et de compiler, ce qui fonctionne, donc il y a quelque chose de spécifique qui empêche d'être accepté comme sûr. –
J'ai trouvé le problème avec mon assembly, il a quelques expressions lambda dans une méthode 'GetEnumerator()', donc je les ai convertis en méthodes régulières + 'new Func <>' (les convertir en méthodes anonymes n'a pas aidé) . Cela m'a permis d'ajouter l'assembly à SQL Server sans obtenir l'erreur. Je ne sais toujours pas exactement pourquoi ces expressions lambda ont causé cela (ils pourraient compiler et fonctionner correctement en dehors de SQL Server). –