SqlBulkcopy memory leak problem

  • Thread starter Thread starter Sergey Zenyuk
  • Start date Start date
S

Sergey Zenyuk

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
 
Hi Sergey,
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
(e-mail address removed)
http://www.saunalahti.fi/janij/
 
Back
Top