【问题标题】:Saving hundreds of thousands of records at a time in SQL Server using ASP.Net使用 ASP.Net 在 SQL Server 中一次保存数十万条记录
【发布时间】:2011-04-07 05:12:01
【问题描述】:

我有一个查询,它一次从服务器获取 200,000 条记录,包含 74 列,然后我必须将它们插入到客户端计算机上的表中。在 ASP.Net(使用 C# 和 SQL Server 2005 数据库)中没有出现“内存不足”错误的最佳方法是什么。

【问题讨论】:

  • 十万 = 100000(印度单位)?不是每个人都精通全球测量单位,你知道...
  • 200000 条记录 x 74 列(比如 512 字节,不确定您有多少个字符串)= 100MB 的存储空间仅用于数据,不包括对象开销。您的服务器应该可以很好地处理 100MB,除非您尝试同时运行多个实例。为什么会出现内存不足错误?
  • 对于这个数据库加载任务,你为什么首先使用 ASP.NET?似乎使用了错误的技术。

标签: c# asp.net sql-server memory-management


【解决方案1】:

您可以使用 DataReader 并使用适当的批量将其作为输入传递给 SqlBulkCopy。

【讨论】:

    【解决方案2】:

    在 Class.cs 中

     public int Saving(int s)
     {
        SqlCommand cmd = new SqlCommand();
        using (SqlConnection cn = new SqlConnection(classname.ConnectionString)){
        cn.Open();
        SqlTransaction trans;
        trans = cn.BeginTransaction();
        try{
        cmd = new SqlCommand("Storedprocedurename", cn, trans);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@spparameter", SqlDbType.Int).Value = s;
        int DataResult =Convert.ToInt32(cmd.ExecuteScalar());
        if (DataResult != 0)
        {
        trans.Commit();
        return DataResult;
        }
        else
        {
        trans.Rollback();
        return -1;
        }
        }
        catch (Exception ex)
        {
        string msg = ex.Message;
        trans.Rollback();
        trans.Dispose();
        return 0;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-30
      • 2021-11-07
      • 2010-12-23
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多