我使用以下模式使用Linq to SQL更新我的SQL Server记录:
List<int> allIds;
using (MyDataContext dc= new MyDataContext())
{
dc.CommandTimeout = 0;
allIds = dc.MyTables.Select(x => x.Id).ToList();
}
Parallel.ForEach(allIds, x => ComputeAndSave(x));
和
ComputeAndSave(int x, MyDataContext dc)
{
var myRecord= dc.MyTables.Select(x => x).Where(x => x.Id == id).FirstOrDefault();
myRecord.Total = myRecord.Total + 1; //some modification(s)
dc.SubmitChanges();
}
我在应用程序的多个部分使用相同的模式来更新某些表中的所有行。在所有这些情况下,SQL Server使用的内存会逐渐增加,增加和增加。我发现释放所有内存的唯一方法是停止并重新启动SQL Server服务。为什么这里有内存泄漏,如何解决?
非常感谢!
答案 0 :(得分:3)
SQL Server 假设占用所有可用内存。它应该在无头服务器上运行。
在SSMS中,打开服务器属性并设置合理数量的最大服务器内存。