Re: OutOfMemoryException Filling DataTable
Upgrading is not an option. Using a DataReader is not an option.
Paging would be least-intrusive to the app, but would still impact
existing code. I'd like to let callers keep their same interface but
behind the scenes swap in/out what is needed from the "in memory"
construct, much the same way a memory-mapped file behaves.
Thanks.
On Tue, 20 Oct 2009 16:54:15 +0200, Jesse Houwing
<jesse.houwing@newsgroup.nospam> wrote:
* SnapDive wrote, On 20-10-2009 16:35:
I am doing a simple select on a MSSQL 2005 database and asking for
10,000 rows using classic ADO.NET. I am getting an out of memory
exception. I need this big table, is there any way to back the
DataTable with a disk-resident stream or something else that will let
me "go big"? I don't care if it is slow or not.
Thanks.
DataTable tb = new DataTable();
try
{
using ( sqlco sqlco = new sqlco( myconnstring ) )
{
sqlco.Open();
using ( da da = new da( "select top 10000 id,key,value from mytable" ,
sqlco ) )
{
da.Fill( tb );
}
}
}
What do you need these 10.000 rows for? Can you
- Page the result set and load them per 10 or 100 or even 1000?
- Use a DataReader and only have one row in memory at the time?
- Upgrade to SQL 2008 and use the new FILESTREAM feature
(http://msdn.microsoft.com/en-us/library/cc716724.aspx)?
As long as we have no clue on whet you're trying to do with these
enormous amounts of data, we can't give you a proper answer.