我知道我以前问过这个问题,但没有得到好的答案。由于我认为与我的 CLR 有关的内存压力,我的 sql server 2014 不断卸载 Appdomain。我现在不确定如何修复它。我已经尝试了很多东西。我会将我的日志附加到这篇文章中。谢谢你的帮助。
最佳答案
自从您在这里首次发布同样的问题以来,一切都没有改变:
Assemblies in SQL Server keep unloading and loading again periodically
无法阻止 SQL Server 卸载它选择的任何 AppDomain。
内存压力意味着没有太多的物理内存剩余,SQL Server 非常喜欢物理内存而不是交换/页面文件。以下是需要注意的事项:
- 检查您的 SQLCLR 代码。您是否正确关闭一次性元素?您是否在内存中存储了很多东西?为什么您的程序集被标记为
UNSAFE
?是因为您将数据存储在静态变量中吗?您使用的 .NET 类是否存在内存泄漏,因此无法在SAFE
和EXTERNAL_ACCESS
程序集中使用(例如,使用TimeZoneInfo
将code>DATETIME
两个 TimeZoneID 之间的值)? - 即使 SQLCLR 代码没有运行,服务器上还有多少可用内存? SQL Server 是否配置为使用足够的系统内存(即检查最大服务器内存设置)。
- 除了 SQL Server 之外,操作系统上是否还有其他应用程序/进程在运行?如果是这样,它们可能会占用本应用于 SQL Server 的物理内存。
关于sql-server - AppDomain 已卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36724857/