Error de memoria insuficiente en el buffer con SSIS

Error de memoria insuficiente en el buffer con SSIS estebi 8 Septiembre, 2009 - 19:06

Cuando ejecuto un flujo de SSIS me falla una tarea que se encarga de cargar una tabla a partir de los datos de otra. Se produce el siguiente error de memoria:

Hresult: 0x80004005  Description: "There is insufficient memory available in the buffer pool

La tabla es bastante grande, tiene más de 1 millón de filas. Supongo que será cuestión de tocar alguna variable o parámetro de memoria, pero no se dónde. Yo he probado a reducir los valores de DefaultBufferMaxRows, DefaultBufferSize y EngineThreads en las propiedades de la Task, pero sigo obteniendo el mismo error.

Puedo seguir probando a tocar estas cosas, pero si alguien sabe cómo solucionarlo le agradezco la ayuda.
 

Pues no tengo ni idea, pero en Microsoft deberian hablar de ello, ya que me parece muy raro que te de un error de memoria solo por tener mas de 1 millón de filas.

Se supone que una ETL tiene que estar preparada para tratar estas cantidades de registros.

Has comentado los valores DefaultBufferMaxRows, DefaultBufferSize y EngineThreads, pero has probado "max server memory"?

Otra cosa, si trata el proceso de carga como una transaccion, ¿puedes evitarlo de alguna manera? para que no se coma el segmento de rollback.

Si lo solucionas ya nos avisaras!

Saludos!

En respuesta a por David

He ampliado el valor de DefaultBufferMaxRows al número de filas que tiene la tabla y por fin ha funcionado.

En el apartado Adjust the sizing of buffers del capítulo Improving the Performance of the Data Flow de la documentación online de MSDN explican que para calcular el tamaño del buffer que va a utilizar, el motor lo primero que hace (luego hace otros cálculos) es multiplicar el tamaño estimado de una fila por el valor de DefaultBufferMaxRows. Supongo que al ser el valor por defecto muy inferior al del número de filas, el buffer al final se quedaba corto.

Ya que he estado buscando información sobre este problema de memoria comparto dos enlaces que pueden resultar de ayuda:

David, no he llegado a probar lo que comentas porque lo he podido solucionar antes, pero gracias por el soporte!