由于内存不足,.net框架执行因升级策略而中止

时间:2013-05-14 11:48:06

标签: asp.net sql-server ado.net sql-server-2012 binaryfiles

我正在使用Net framework 4.0和Sql Server 2012进行开发。在asp.net中的Web应用程序中执行数据库操作时,会发生随机错误。我从代码隐藏文件中调用了一些sql查询。它适用于大小超过300KB的大型文档。如何增加规模。

编辑:

主要在视图图像文件和数据库中保存二进制数据时发生

以下是我收到错误的代码

        int isUpdateIDProof = 1;
        SqlParameter paramInsertIDProof = null;
        SqlCommand cmdInsertIDProof = new SqlCommand("OnBoarding_InsertUploadedIDProof", con);
        cmdInsertIDProof.CommandType = CommandType.StoredProcedure;

        paramInsertIDProof = new SqlParameter("@FileCaption", SqlDbType.VarChar, 100);
        paramInsertIDProof.Direction = ParameterDirection.Input;
        paramInsertIDProof.Value = txtIDProofDescription.Text;
        cmdInsertIDProof.Parameters.Add(paramInsertIDProof);

        paramInsertIDProof = new SqlParameter("@FileData", SqlDbType.VarBinary,1000000000);
        paramInsertIDProof.Direction = ParameterDirection.Input;
        paramInsertIDProof.Value = OnBoardingFileData;
        cmdInsertIDProof.Parameters.Add(paramInsertIDProof);

        paramInsertIDProof = new SqlParameter("@FileNames", SqlDbType.VarChar, 100);
        paramInsertIDProof.Direction = ParameterDirection.Input;
        paramInsertIDProof.Value = fileName;
        cmdInsertIDProof.Parameters.Add(paramInsertIDProof);

        //execute SQL COMMAND 
        con.Open();
        cmdInsertIDProof.ExecuteNonQuery();
        con.Close();

2 个答案:

答案 0 :(得分:3)

您的code没有任何问题。所有关于数据库服务器的内存泄漏都是通过存储映像的方式实现的。如果您使用任何sql server项目dll来压缩和解压缩二进制数据,请检查这一点。

要隐藏错误,可以重新启动sql server服务。它会自动刷新内存并开始正常工作。一年前我遇到了同样的问题。

答案 1 :(得分:0)

这不是来自asp.net编码方面的问题。在处理您的请求并查找执行脚本的内存较少时,会在Sql server中发生这种情况。

我还在运行SQL CLR存储过程并面临类似问题的标准之一中遇到此问题。

以下文章可能有所帮助: - https://www.johnsansom.com/sql-server-memory-configuration-determining-memtoleave-settings/

本文介绍了“memToleave”,它是用于高效内存使用的虚拟地址空间。