SqlBulkcopy memory leak problem


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
 
Ad

Advertisements

J

Jani Järvinen [MVP]

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/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top