Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
При выполнении SSIS-пакета на сервере получаю ошибку: "... Задаче потока данных не удалось создать буфер для вызова метода PrimeOutput... Это обычно случается вследствие нехватки памяти... Не удалось поместить 3080064 байт в буфер".
Выполняю этот же пакет у себя на компьютере - всё работает без ошибок. Но на моём компьютере свободно около 4 Гб памяти из 8, а на сервере около 20 Гб (всего 144, но 125 постоянно занято SQL Server-ом и системой). Во время выполнения пакета сервер простаивает, т.е. другие приложения эту память не расходуют.
Есть идеи относительно причин нехватки памяти?

К сообщению приложен файл. Размер - 16Kb
18 дек 15, 02:56    [18576011]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
SQL Server 2012 sp2 (build 11.0.5343)
Ошибка повторяется после перезапуска SQL Server (когда освобождается вся оперативная память) и под учеткой администратора сервера (до этого выполнял под служебной учеткой с ограниченными правами)

В чем может быть проблема? Может что-то с настройками SSIS, ограничение используемой памяти например?
21 дек 15, 04:33    [18586573]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 594
Max_11111,

Странно что у вас только 2 GB виртуальной памяти видно в SSIS. Случайно, вы SSIS в 32-битном режиме не запускаете?
Из рекомендаций - если большой размер буфера не размещается в памяти - попробуйте уменьшить DefaultBufferSize на том Dataflow где падает ошибка. Хотя это странно, обычно делается наоборот - размер буфера увеличивается.
21 дек 15, 10:41    [18587269]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Ferdipux,

Да, вы правы, в 32-битном режиме. Есть ли возможность увеличить размер буфера в этом режиме, или обязательно нужно переходить на 64?
С переходом на 64-битный режим общая производительность SSIS-пакета возрастет?
21 дек 15, 14:23    [18588567]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 594
Max_11111
Да, вы правы, в 32-битном режиме. Есть ли возможность увеличить размер буфера в этом режиме, или обязательно нужно переходить на 64?
С переходом на 64-битный режим общая производительность SSIS-пакета возрастет?


А зачем вы это делаете - запускаете в 32-битном режиме? Есть какие-то специфические соображения?
Ограничение в 2 GB характерно для любых приложений 32-бит, для приложения выполнения SSIS пакетов преодолеть его нельзя.
По производительность - сказать не могу, скорее всего не изменится или может несколько вырасти из-за увеличения доступной памяти.
21 дек 15, 14:46    [18588788]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Ferdipux,

В некоторых из пакетов общего проекта я использовал Excel-файл со статичными данными. 64-битный коннектор к нему найти не удалось, пришлось установить 32-разрядный режим.
Придётся немного изменить проект, перенести данные из Excel в SQL базу и подключаться к ней. Давно собирался это сделать, вот и повод нашёлся.
21 дек 15, 15:31    [18589174]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Glory
Member

Откуда:
Сообщений: 104751
Max_11111
64-битный коннектор к нему найти не удалось

Если вы про Jet, то его нет
А если вы про ACE OLEDB, то такой есть
21 дек 15, 15:37    [18589212]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 594
Max_11111
В некоторых из пакетов общего проекта я использовал Excel-файл со статичными данными. 64-битный коннектор к нему найти не удалось, пришлось установить 32-разрядный режим.
Придётся немного изменить проект, перенести данные из Excel в SQL базу и подключаться к ней. Давно собирался это сделать, вот и повод нашёлся.


Можете, если минимизировать изменения - выделить работу с Excel в отдельный пакет и вызывать его из основного с опцией "запуск в 32 бита", а основной пакет - работает в 64 битной среде.
21 дек 15, 17:35    [18590166]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31950
Max_11111
Да, вы правы, в 32-битном режиме. Есть ли возможность увеличить размер буфера в этом режиме, или обязательно нужно переходить на 64?
Вообще странно, что SSIS не можно выделить 3 мегабайта для буфера, при свободных 179 мегабайтах.
Я бы посмотрел на версии клиента и сервера для начала...
22 дек 15, 00:34    [18591731]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Ferdipux,

автор
выделить работу с Excel в отдельный пакет и вызывать его из основного с опцией "запуск в 32 бита"


И всё это в рамках одного проекта? Можете подробнее рассказать? в задаче "Выполнение пакета" я не нашёл такого параметра.
22 дек 15, 02:50    [18591935]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 594
Max_11111,

Делаете запуск пакета не штатной задачей запуска пакета, а делаете SQL Agent job с запуском, и запускаете его хранимкой job_run. Далее мониторите окончание работы в цикле.
22 дек 15, 10:55    [18592869]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Ferdipux,

Ну это уже два разных проекта получится, просто один из другого запускается.

Ferdipux
мониторите окончание работы в цикле

Это делать SQL-скриптом, или есть какой-то стандартный обработчик в SSIS? Если не сложно, дайте, пожалуйста, пример кода?
22 дек 15, 13:09    [18593754]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 594
Max_11111,

Гм, это один проект (в смысле проектов SSIS 2012). Просто два пакета.
Пример реализации запуска и ожидания.
Запуск - Execute SQL Task, команда - exec msdb.dbo.sp_start_job @job_name = ?
В самом job конфигурируете запуск пакета как хотите.
Мониторинг
- Делаете For Loop для переменной @ExecStatus, initial @ExecStatus=1, Condition @ExecStatus==1. Переменная имеет тип Int32.
- Первая задача цикла - задержка на некое кол-во секунд, я ставлю 1-5 через SQL Exec command - waitfor delay '00:00:02'
- Вторая задача цикла - проверка статуса выполнения job, через SQL Exec, команда exec msdb.dbo.sp_help_job @job_name = ? , @job_aspect = 'job', возвращаем 1 строку, назначаем Result Set для Result Name - current_execution_status переменной User::ExecStatus.

Как работает - вторая задача цикла возвращает код статуса работы job, 1 - job работает. Как только она станет не 1 - job не работает, то есть закончился.
Если хотите узнать как он закончился - читаете Result Name - last_run_outcome.

Альтернативы (пока не делал) - в SSIS 2012 в режиме ssisdb можно запускать пакеты из команды SQL. Только нужно правильно передать параметры + получить execution id и мониторить его статус в аналогичном цикле (так как запуск пакета - по умолчанию асинхронный).
22 дек 15, 14:38    [18594480]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
Я так подозреваю, что нехватка памяти - это парадоксальная ошибка и на самом деле проблема может быть в некорректных данных. Т.е. текст ошибки абсолютно не соответствует причине. Доустановить паки-фиксы не помешает.
22 дек 15, 14:48    [18594590]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Ferdipux,

Большое спасибо.
22 дек 15, 15:13    [18594787]     Ответить | Цитировать Сообщить модератору
 Re: SSIS-пакет: нехватка памяти  [new]
Max_11111
Member

Откуда:
Сообщений: 201
Владислав Колосов,

Нет, уверен что проблема именно в нехватке памяти. На моём компьютере пакет выполнялся без ошибок. Даже на сервере при загрузке малого количества тех-же данных он выполнился в 32-битном режиме. Проблема возникла при загрузке большого количества данных: около 600000 строк и около 50 уточняющих запросов, возвращающих в среднем по 2000 строк.
В любом случае, сегодня я изменил проект и отключил запуск в 32-разрядном режиме. Если будут ошибки с памятью, я отпишусь завтра.
22 дек 15, 15:19    [18594829]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить