Мы извлекаем огромные данные из базы данных SQL-сервера. Он имеет около 25000 строк с 2500 столбцами. Требование состоит в том, чтобы считывать данные и экспортировать их для распространения листа, поэтому разбиение на страницы не является выбором. Когда записи меньше, они могут вытащить данные, но когда они вырастут до размера, указанного выше, оно бросает исключение.Исключение из памяти при извлечении огромных данных из базы данных
public DataSet Exportexcel(string Username)
{
Database db = DatabaseFactory.CreateDatabase(Config);
DbCommand dbCommand =
db.GetStoredProcCommand("Sp_ExportADExcel");
db.AddInParameter(dbCommand, "@Username", DbType.String,
Username);
return db.ExecuteDataSet(dbCommand);
}
Пожалуйста, помогите мне в решении этой проблемы.
Вы можете рассчитать размер набора данных, извлекая только 1000 строк и проверяя размер возвращаемого DataSet? умножьте затем на 25 и проверьте, что на вашем сервере достаточно памяти. Остерегайтесь ASP.NET, IIS, архитектура Windows Server может иметь некоторые ограничения, поэтому, если вы нажмете на стену любого из этих ограничений, это не поможет, даже если у сервера есть 2 ТБ ОЗУ ... но сначала проверьте фактические цифры в вашем случае ... –
Почему бы вам не написать запрос, чтобы ограничить количество строк, полученных из базы данных. Повторите его, пока вы не экспортируете все из них. – onatm
Вам необходимо передать данные, экспортировать их в автономный DataSet, использовать DataReader для итерации по каждой строке в наборе записей, так что вы не будете глотать память за один раз. – Mantorok