Получение данных с сервера SQL в пакетном режиме - PullRequest
2 голосов
/ 29 августа 2011

У меня есть веб-приложение Silverlight.

Я вставляю записи в таблицу (база данных SQL), загруженную из файла CSV.Я попытался загрузить + - 15 000 записей, и он выдает меня со следующей ошибкой: Удаленный сервер возвратил ошибку: NotFound.

Я понимаю, это потому, что слишком много данных для одновременной вставки, потому что когдаЯ разделил его на «партии», скажем, по 100 за раз, он вставил в стол никаких проб.Даже 500 за один раз было слишком много.

То, что я делаю после того, как вставляю его в таблицу, читает из этой же таблицы данные и помещает их в таблицу данных.Это позволяет пользователю видеть, что он был вставлен успешно, а также отслеживать, как обрабатываются вставленные записи.

Теперь, очевидно, я получаю ту же ошибку при попытке загрузить 15000 + - записей обратно вdatagrid.

Мой вопрос: как я могу прочитать записи в таблице также в пакетном режиме?

Надеюсь, что кто-нибудь может помочь.

Большое спасибо,

Нил

РЕДАКТИРОВАТЬ

Для проверки я внес изменение в 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;
}

Результат возвращается из базы данных, но когда я пытаюсь вернуть его в приложение: -> return sendBoxList

Затем выдает «Удаленный сервер вернул ошибку:Не обнаружена."ошибка.Надеюсь, что эта дополнительная информация поможет

С уважением

Нил

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Я не уверен, является ли это именно вашей проблемой, основываясь на ограниченном сообщении об ошибке, которое вы разместили (трассировка стека поможет лучше диагностировать это), но я предполагаю, что вы используете службу WCF для передачи своих данныхВ базе данных и обратно, и у службы установлен максимальный размер сообщения, который вам необходимо увеличить, чтобы обеспечить передачу больших объемов данных.Вот статья, в которой говорится об этой wcf-how-to-увеличить-размер-квоте-квоты

2 голосов
/ 29 августа 2011

Я не уверен, каково ваше точное деловое требование. Но, следуя одному из ваших ответов, вы сказали пользователю wnats, чтобы увидеть все записи. Я не уверен, что пользователь сможет сделать в случае сбоя всех 15 000 записей. Может быть, было бы неплохо показать некое резюме, скажем, из 15000, 10000 пройдено и 5000 не удалось. И предоставьте детализацию или навигационную ссылку для изучения записей об успехах или неудачах.

Во-вторых, несмотря на то, что пользователь хочет видеть все записи, я не думаю, что он удобен для отображения более 100 записей в сетке. 100 также экстремален для меня. Вы можете реализовать функцию подкачки, чтобы ограничить количество записей, отображаемых в сетке.

2 голосов
/ 29 августа 2011

Это похоже на работу, выполняемую с помощью механизма массовой вставки, например SqlBulkCopy (рабочий процесс: передача файла csv на сервер, создание таблицы данных или чего-либо еще и вставка за один раз)В любом случае, использование пакетов - это хорошая идея, например, 1000 элементов за раз не должны быть проблемой.

Примечание: с какой стати вы хотите отображать 15000 записей в сетке?Нет смысла ... Например, не лучше ли, например, показать последние 10 вставленных записей вместе с общим количеством?

...