AppDomain 已卸载

AppDomain unloaded

我知道我以前问过这个问题,但没有得到很好的答案。由于内存压力,我的 sql 服务器 2014 不断卸载 Appdomain,我认为这与我的 CLR 有关。我现在不确定如何修复它。我已经尝试了很多东西。我会将我的日志附加到此 post。谢谢你的帮助。

自从您在这里首次发布同样的问题以来,一切都没有改变:

无法阻止 SQL 服务器能够卸载它选择的任何 AppDomain。

内存压力意味着没有太多物理内存剩余,SQL 服务器更喜欢物理 ram 而不是 swap/page 文件。以下是需要注意的事项:

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