2016-03-22 3 views

Répondre

1

Les Assemblées sont débarquées en raison de la raison exacte indiquée dans le journal: la pression de la mémoire. Il n'y a rien de spécifique que vous pouvez faire pour empêcher cela (c'est-à-dire aucune option pour désactiver ce comportement). Le plus que vous pouvez faire est de réduire les chances de se produire en ajoutant plus de mémoire et/ou en réduisant la consommation de mémoire de vos requêtes et/ou des objets SQLCLR. Les suggestions ci-dessus ne signifient pas qu'il y a quelque chose d'inefficace dans vos requêtes ou votre code .NET, mais que si vous avez besoin de plus de mémoire, vous devez en ajouter ou en utiliser moins. Et si vous utilisez actuellement le moins possible, alors vous avez besoin d'ajouter plus de mémoire.

Sans voir votre code .NET, il n'est pas possible de déterminer s'il y a des zones qui pourraient être améliorées. Cependant, il est plus probable que le problème se situe en dehors de votre code SQLCLR. Vous devez déterminer combien de mémoire vous avez et où il est utilisé. Essayez de regarder à travers cette question sur DBA.StackExchange:

SQL Server 2012 memory consumption outside the buffer pool

En outre, SQL Server ne marque pas l'Assemblée comme UNSAFE. C'est simplement comme cela que vous avez l'ensemble de l'Assemblée. Vous pouvez essayer de modifier l'assembly pour qu'il soit EXTERNAL_ACCESS s'il ne fait que des opérations d'accès au système de fichiers.

+0

Comment réduire ou ajouter la consommation de mémoire pour les CLR seulement? –

+0

@ValK J'ai mis à jour ma réponse, mais cela dépend de votre code. Votre code pourrait être bon, je disais juste que c'est un domaine à regarder. –

+0

Merci. Eh bien, je pense que le code CLR est bien. Je voudrais essayer d'allouer plus de mémoire aux CLR hors de toute la mémoire sql disponible mais pas sûr comment le faire. En lisant certains des liens dans votre message, j'ai découvert que la mémoire CLR fait partie de la mémoire maximale du serveur, est-ce vrai? –