批量从SQL Server检索数据

时间:2011-08-29 10:02:48

标签: c# sql-server silverlight wcf linq

我有一个Silverlight Web应用程序。

我将记录插入到从csv文件加载的表(SQL数据库)中。 我尝试加载+ - 15 000条记录,它抛出了以下错误: 远程服务器返回错误:NotFound。

我收集它是因为一次插入的数据太多了,因为当我将它分成'批次'时,一次说100,它插入表中没有probs。一次只有500个太多了。

我将其插入表格后所做的是从同一个表中读取数据并将其放入数据网格中。这样用户就可以看到它已成功插入,并且还会在处理插入的记录时进行监视。

现在显然我在尝试将15000 + - 记录加载回数据网格时遇到了同样的错误。

我的问题是如何批量阅读表中的记录?

希望有人可以提供帮助。

非常感谢,

尼尔

修改

测试我对OperationContract进行了更改:

最初

[OperationContract]
public List<send_box> GetSendingItems()
{
    return (from a in smsData.send_boxes
            orderby a.sb_log descending
            select a).ToList();
}

已更改为

[OperationContract]
public List<send_box> GetSendingItems()
{
    List<send_box> sendBoxList = (from a in smsData.send_boxes
            orderby a.sb_log descending
            select a).ToList();

    return sendBoxList;
}

结果从数据库返回,但是当我尝试将其返回给应用程序时: - &GT; return sendBoxList

然后它抛出“远程服务器返回错误:NotFound”。错误。希望这些额外信息可以提供帮助

此致

尼尔

3 个答案:

答案 0 :(得分:4)

我不确定这是否是您发布的有限错误消息的确切问题(堆栈跟踪有助于更好地诊断),但我假设您正在使用WCF服务将数据传递给数据库和后退,并且服务具有最大消息大小集,您需要增加该大小以允许传递更大量的数据。这是一篇文章,讨论了这个wcf-how-to-increase-message-size-quota

答案 1 :(得分:2)

这看起来像是使用SqlBulkCopy等批量插入机制执行的工作(工作流程:将csv文件传输到服务器,构建数据表或其他内容并一次插入)。无论如何使用批次是个好主意,例如一次1000件物品应该不是问题。

旁注:为什么你想在网格中显示15000条记录?没有意义......例如对我们来说不是更好吗显示最后10个插入的记录,以及总计数?

答案 2 :(得分:2)

我不确定您的确切业务要求是什么。但是按照你的一个回复,你说用户会看到所有的记录。如果所有15,000条记录都失败,我不确定用户能够做什么。可能是一个好主意,显示一个总结说,让我们说15000,10000通过,5000失败。并提供向下钻取或导航链接以探索成功或失败记录。

其次,即使用户想要查看所有记录,我也认为用户不会在网格中显示超过100条记录。 100对我来说也是极端的。您可以实现分页功能以限制网格中显示的记录数。