AppDomain已卸载

时间:2016-04-19 17:00:34

标签: sql-server memory sql-server-2014 sqlclr

我知道我之前已经问过这个问题,但没有得到一个好的答案。由于我认为与我的CLR有关的内存压力,我的sql server 2014一直在卸载Appdomain。我不知道如何解决这个问题。我已经尝试了很多东西。我会将我的日志附在这篇帖子上。谢谢你的帮助。 enter image description here

1 个答案:

答案 0 :(得分:1)

自从您第一次在此处发布此问题后,没有任何变化:

Assemblies in SQL Server keep unloading and loading again periodically

无法阻止SQL Server卸载它选择的任何AppDomain。

内存压力意味着没有大量的物理内存,SQL Server非常喜欢物理内存而不是交换/页面文件。以下是需要注意的事项:

  1. 查看您的SQLCLR代码。你正确关闭一次性物品吗?你在存储器中存储了很多东西吗?为什么您的程序集标记为UNSAFE?是因为您将数据存储在静态变量中吗?您是否正在使用具有内存泄漏的.NET类,因此无法在SAFEEXTERNAL_ACCESS程序集中使用(例如,使用TimeZoneInfo在两个TimeZoneID之间转换DATETIME值?
  2. 即使SQLCLR代码没有运行,服务器上还有多少可用内存? SQL Server是否配置为使用足够的系统内存(即检查“最大服务器内存”设置)。
  3. 除SQL Server外,OS上是否还有其他应用程序/进程在运行?如果是这样,他们可以占用应该转到SQL Server的物理内存。