Connecting Tech Pros Worldwide Forums | Help | Site Map

SqlBulkcopy memory leak problem

Sergey Zenyuk
Guest
 
Posts: n/a
#1: Nov 5 '08
In VB.net windows application I use following
code implementing SqlBulkCopy import:
Using connODBC As New OdbcConnection(ConnStrODBC)
connODBC.Open()
Dim dbcmd As New OdbcCommand(String.
Format("select * from {0}", TableName), connODBC)
dbcmd.CommandTimeout = SQL_TIMEOUT
bulkcopy.WriteToServer(dbcmd.ExecuteReader())
connODBC.Close()
connODBC.Dispose()
End Using

with connection string:
Dim connbuilderODBC As New OdbcConnectionStringBuilder()
connbuilderODBC("Driver") = "{Microsoft Visual FoxPro
Driver}"
connbuilderODBC("SourceType") = "DBF"
connbuilderODBC("SourceDB") = Path.
GetDirectoryName(DBFileName)
connbuilderODBC("Exclusive") = "No"
ConnStrODBC = connbuilderODBC.ConnectionString

this code leak to memory leak problems on big files.
After visual studio closing memory is busy.
Please,help

Jani Järvinen [MVP]
Guest
 
Posts: n/a
#2: Nov 5 '08

re: SqlBulkcopy memory leak problem


Hi Sergey,
Quote:
In VB.net windows application I use following
code implementing SqlBulkCopy import:
Using connODBC As New OdbcConnection(ConnStrODBC)
connODBC.Open()
Dim dbcmd As New OdbcCommand(String.
Format("select * from {0}", TableName), connODBC)
dbcmd.CommandTimeout = SQL_TIMEOUT
bulkcopy.WriteToServer(dbcmd.ExecuteReader())
connODBC.Close()
connODBC.Dispose()
End Using
this code leak to memory leak problems on big files.
How are you measuring the memory usage and leaking? One thing that is most
probably the major factor is that you let the .NET garbage collector to
collect memory for the OdbcCommand, OdbcDataReader and the SqlBulkCopy
instances.

All these implement the IDisposable interface, so you should call their
Dispose methods if you want to make sure the memory is freed as soon as
possible. If you don't this, you might observe the said leak.

--
Regards,

Mr. Jani Järvinen
C# MVP
Vantaa, Finland
janij@removethis.dystopia.fi
http://www.saunalahti.fi/janij/


Closed Thread