我有一个 SQL Express 2008 实例作为服务器上小型 Web 应用程序的后端运行。
服务器规格: Windows 2003,64 位四核,4GB 内存
SQL 数据库在磁盘上只有 50mb,我从未在任务管理器中看到 SQL 进程使用超过 200mb 的内存,但我注意到这些消息与 SQL 日志中的内存问题有关。
由于内存压力,AppDomain 2 (mssqlsystemresource.sys[runtime].1) 被标记为卸载。
知道是什么原因造成的吗?
我有一个 SQL Express 2008 实例作为服务器上小型 Web 应用程序的后端运行。
服务器规格: Windows 2003,64 位四核,4GB 内存
SQL 数据库在磁盘上只有 50mb,我从未在任务管理器中看到 SQL 进程使用超过 200mb 的内存,但我注意到这些消息与 SQL 日志中的内存问题有关。
由于内存压力,AppDomain 2 (mssqlsystemresource.sys[runtime].1) 被标记为卸载。
知道是什么原因造成的吗?
不要相信任务管理器!查看性能计数器以了解 SQL Server 实际使用了多少内存。
您是否使用链接服务器?看看这些线程/文章:
MSDN 论坛:AppDomain 由于内存压力而标记为卸载
SQL Monster:由于内存压力,AppDomain 被标记为卸载
PSS SQL 博客:如果你使用链接服务器查询,你需要阅读这个
还有这些知识库文章:
Express 版使用人为对内存和 CPU 施加的自我限制。它不会将其缓冲池扩展超过 1GB,并且不会创建多个调度程序(即,只会使用一个核心)。因此,无论您拥有多少物理 RAM,您的系统都会遇到内存压力。由于某些 SQL 数据类型是在 CLR 中实现的(如地理和几何),因此这种内存压力可以驱逐承载这些系统类型的应用程序域(因此应用程序域位于 mssqlsystemresource 中)。