Aravindba Ответов: 1

Получение ошибки при заполнении данных из sqldataadapter в datatable in VB.NET которые содержат двоичные данные


Привет , я храню двоичные данные в одной таблице,в цикле For получает двоичные данные один за другим,ниже приведен мой код в этом
fadts is datatable содержит 3 строки,когда в первый раз он работает нормально,во второй раз, когда идет заполнять данные в dataadapter, он выдает ошибку,

           For Each row1 As DataRow In fadts.Rows
                    callclearsql()
                    System.Threading.Thread.Sleep(2000)
                    Dim facons1 As New SqlConnection(My.Settings.CS)
                    facons1.Open()
                    Dim fadrs1 As New SqlDataAdapter("SELECT ID,DocumentExtension,DocumentName,[Document]  FROM FileStore  where ID=" & row1("ID").ToString & "", facons1)
                    Dim fadts1 As New DataTable
                    fadrs1.SelectCommand.CommandTimeout = 0
                    fadts1.Rows.Clear()
                    fadrs1.Fill(fadts1)' Here got Exception of type 'System.OutOfMemoryException' was thrown.

                    Writelog("above loop1.1")
Next


Он работает только в первом цикле, во второй раз он выдает ошибку, столбец[Document] содержит двоичные данные.

Пожалуйста ответьте как можно скорее

С уважением
Аравинд

Что я уже пробовал:

Я сделал dispose, clear и close для fadrs1, fadts1 и sql-соединения, но даже это вызывает ошибку.

Dave Kreskowiak

Насколько велики эти строки в байтах каждая?

Aravindba

300 МБ, значит, мы используем таблицу filestream. [Document] varbinary (MAX) проверено, для первого файла можно получить, во второй раз он выдает ошибку.если все файлы ниже 50 МБ, то нет проблем с тем же кодированием.Пожалуйста, скажите мне, как решить эту проблему . я добавил ниже запрос в ДО и после команды select и в каждые 5 строк

Инструкция DBCC FREESYSTEMCACHE ('все') с MARK_IN_USE_FOR_REMOVAL; инструкция DBCC FREESESSIONCACHE с NO_INFOMSGS; инструкция DBCC FREEPROCCACHE с NO_INFOMSGS; инструкция DBCC DROPCLEANBUFFERS; инструкция DBCC FREEPROCCACHE ("внутренней"); инструкция DBCC FREESESSIONCACHE с NO_INFOMSGS; инструкция DBCC FREESYSTEMCACHE ('все', внутренние);

Aravindba

Спасибо за ваши усилия, наконец - то я нашел решение по этой ссылке
https://msdn.microsoft.com/en-us/library/87z0hy49(v=против 110). aspx

Спасибо

1 Ответов

Рейтинг:
2

Aravindba

Спасибо, наконец-то я нашел решение по этой ссылке, Спасибо MicroSoft
https://msdn.microsoft.com/en-us/library/87z0hy49(v=против 110). aspx