使用Linq to SQL时SQL Server中的内存泄漏

时间:2012-06-26 17:13:15

标签: sql-server linq-to-sql memory-leaks

我使用以下模式使用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服务。为什么这里有内存泄漏,如何解决?

非常感谢!

1 个答案:

答案 0 :(得分:3)

SQL Server 假设占用所有可用内存。它应该在无头服务器上运行。

在SSMS中,打开服务器属性并设置合理数量的最大服务器内存。