Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Суть проблемы:
При выполнении хп внутри которой вызывается openrowset для сохранения бинарных данных (image) из одной базы в другую, в рамках одного сервера, SQL server выдает ошибку:

OLE DB provider 'MSDASQL' reported an error. The provider ran out of memory.
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server Driver]Усечение данных строки справа]
OLE DB error trace [OLE/DB Provider 'MSDASQL' IRowset::GetNextRows returned 0x8007000e: The provider ran out of memory.].

Microsoft SQL Server 2000 - 8.00.2055 (Intel X86) Dec 16 2008 19:46:53 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Версия MDAC 2.81
В реестре значение для DisallowAdAccess установлено в 0.
ограничений на размер баз нет, места на дисках предостаточно.

во всех уже существующих на форуме подобных темах порылся, ничего из предложенного решения для моей проблемы не подошло.
дело не в утечке памяти, ибо после рестарта самого SQL сервера проблема не исчезает.

подскажите, пожалуйста, где еще копать?
26 апр 11, 12:40    [10567153]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://www.sql.ru/forum/actualtopics.aspx?search=The+provider+ran+out+of+memory.&submit=%CD%E0%E9%F2%E8&bid=1
26 апр 11, 12:42    [10567175]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Гавриленко Сергей Алексеевич
https://www.sql.ru/forum/actualtopics.aspx?search=The+provider+ran+out+of+memory.&submit=%CD%E0%E9%F2%E8&bid=1


спасибо, но все это я уже смотрел, похожей на мою проблемы не смог найти (
26 апр 11, 12:48    [10567240]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Glory
Member

Откуда:
Сообщений: 104751
Scherbakov
дело не в утечке памяти, ибо после рестарта самого SQL сервера проблема не исчезает.

Дело в том, что для команд типа openrowset выделен свой пул памяти. Которого вам и не хватает
Зачем в пределах одного сервера использовать openrowset - непонятно
26 апр 11, 12:52    [10567280]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Зачем в пределах одного сервера использовать openrowset - непонятно[/quot]

на самом деле есть 2 одинаковых SQL сервера, на 2 разных физических серверах, подразумевалось, что данные из базы можно копировать в другую базу как в рамках одного физического сервера, так и в базу, находящуюся на другом физическом сервере. к такому решению пришли недавно, всвязи с наложившимися обстоятельствами. и до недавнего времени все работало со всеми базами и обоими серверами. сейчас копирование не происходит ни на одном, ни на разных физически серверах.

Почему до этого все работало и почему сейчас не хватает пула памяти?
как это можно поправить?
26 апр 11, 13:04    [10567389]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Glory
Member

Откуда:
Сообщений: 104751
Scherbakov
Почему до этого все работало и почему сейчас не хватает пула памяти?
как это можно поправить?

Потому что раньше меньше данных было
26 апр 11, 13:07    [10567414]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Glory
Scherbakov
Почему до этого все работало и почему сейчас не хватает пула памяти?
как это можно поправить?

Потому что раньше меньше данных было

Сейчас пытался копировать данные, объемом меньше, чем копировал тогда когда все работало - та же ошибка. быть может дело все таки не в пуле памяти?
26 апр 11, 13:18    [10567532]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
ошибку получаю при попытке получить данные:

SELECT [fileimage]
FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=192.168.1.1;UID=sa;PWD=password', [BASE_NAME].[dbo].[TABLE_NAME])

в результате:
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server Driver]Усечение данных строки справа]
OLE DB error trace [OLE/DB Provider 'MSDASQL' IRowset::GetNextRows returned 0x8007000e: The provider ran out of memory.].
Сообщение 7399, уровень 16, состояние 1, строка 1
OLE DB provider 'MSDASQL' reported an error. The provider ran out of memory.

подскажите, что еще посмотреть?
26 апр 11, 17:11    [10569763]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Glory
Member

Откуда:
Сообщений: 104751
И каков суммарный размер всех fileimage ?
26 апр 11, 17:14    [10569802]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Glory
И каков суммарный размер всех fileimage ?


около 3 Мб.
26 апр 11, 21:17    [10570777]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Glory
И каков суммарный размер всех fileimage ?
А шо сервер такой умный что читает только нужные строки колонки?
Может нужны соответствующие параметры провайдера линка?
26 апр 11, 21:44    [10570849]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SQLOLEDB провайдер дает такой же эффект?
26 апр 11, 22:03    [10570913]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
помогла перезагрузка системы и увеличение верхнего интервала памяти
все спасибо!
29 апр 11, 14:58    [10587086]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
А OpenQuery по другому работает?
29 апр 11, 16:36    [10588135]     Ответить | Цитировать Сообщить модератору
 Re: The provider ran out of memory при вызове openrowset  [new]
Scherbakov
Member

Откуда: Нижний Новгород
Сообщений: 82
Вынужден поднять тему!
Дело в том что изначально на физических серверах было по 2 гига ОЗУ (уж таковы серваки) и со временем sql сервер отжирал всю оперативку, доступно оставалось порядка 200-300 мегабайт. Решалась проблема просто перезагрузкой физического сервера, память освобождалась и все опять начинало работать. После увеличения ОЗУ до 3,5 гигов, проблема не исчезла, только теперь оперативки доступно порядка 1,5 гигов. самому sql серверу выделено 2048 Мб из 3582 Мб (верхний предел Dynamically configure SQL Server memory в SQL Server Properties)
просто рестартом системы проблема не устраняется.
объем перегоняемых данных порядка 5 мегабайт.
у кого какие соображения по этому поводу?
с чем может быть связано?
заранее спасибо!
19 май 11, 10:25    [10676095]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить