Liberar la memoria

18/06/2008 - 18:39 por Miguel Acevedo | Informe spam
Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
Server 2000, la ejecución de estos procedimientos almacenados consume mucha
memoria. Después de ejecutado todos los procedimientos almacenados cierro la
aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
memoria del SQL Server 2000 desde Visual Basic .Net?

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
18/06/2008 - 19:17 | Informe spam
SQL Server trata de usar lo máximo de memoria que pueda siempre.

Lo que usted puede hacer es configurar a SQL Server para que no consuma más
de un cierto tamaño de memoria (vea el uso de sp_configure en los Books
Online).

Si una vez que usted termina la aplicación, no hay más aplicaciones que usen
al SQL Server, usted puede detener el servicio SQL para liberar memoria. O si
lo prefiere, reiniciar el servicio. Puede usar el comando de línea NET
START/STOP para eso.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Miguel Acevedo" wrote:

Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
Server 2000, la ejecución de estos procedimientos almacenados consume mucha
memoria. Después de ejecutado todos los procedimientos almacenados cierro la
aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
memoria del SQL Server 2000 desde Visual Basic .Net?

Respuesta Responder a este mensaje
#2 Miguel Acevedo
18/06/2008 - 19:25 | Informe spam
Gracias por la sugerencia, lo que sucede es que estamos hablando de
servidores que manejan varias aplicaciones y su uso es bastante delicado esto
no permite estar reiniciando los servicios, por otra parte me gustaría poder
libera de la memoria cada store procedure que mande a ejecutar desde mi
aplicación.

Gracias de antemano por la ayuda que puedan darme.

"Gux (MVP)" wrote:

SQL Server trata de usar lo máximo de memoria que pueda siempre.

Lo que usted puede hacer es configurar a SQL Server para que no consuma más
de un cierto tamaño de memoria (vea el uso de sp_configure en los Books
Online).

Si una vez que usted termina la aplicación, no hay más aplicaciones que usen
al SQL Server, usted puede detener el servicio SQL para liberar memoria. O si
lo prefiere, reiniciar el servicio. Puede usar el comando de línea NET
START/STOP para eso.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Miguel Acevedo" wrote:

> Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
> en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
> Server 2000, la ejecución de estos procedimientos almacenados consume mucha
> memoria. Después de ejecutado todos los procedimientos almacenados cierro la
> aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
> asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
> SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
> memoria del SQL Server 2000 desde Visual Basic .Net?
>
Respuesta Responder a este mensaje
#3 Gux (MVP)
18/06/2008 - 19:28 | Informe spam
No se puede liberar selectivamente la memoria de SQL Server que es usada por
procedimientos. Considere usar sp_configure para que SQL Server no use más de
cierto tope de memoria.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Miguel Acevedo" wrote:

Gracias por la sugerencia, lo que sucede es que estamos hablando de
servidores que manejan varias aplicaciones y su uso es bastante delicado esto
no permite estar reiniciando los servicios, por otra parte me gustaría poder
libera de la memoria cada store procedure que mande a ejecutar desde mi
aplicación.

Gracias de antemano por la ayuda que puedan darme.

"Gux (MVP)" wrote:

> SQL Server trata de usar lo máximo de memoria que pueda siempre.
>
> Lo que usted puede hacer es configurar a SQL Server para que no consuma más
> de un cierto tamaño de memoria (vea el uso de sp_configure en los Books
> Online).
>
> Si una vez que usted termina la aplicación, no hay más aplicaciones que usen
> al SQL Server, usted puede detener el servicio SQL para liberar memoria. O si
> lo prefiere, reiniciar el servicio. Puede usar el comando de línea NET
> START/STOP para eso.
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Miguel Acevedo" wrote:
>
> > Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
> > en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
> > Server 2000, la ejecución de estos procedimientos almacenados consume mucha
> > memoria. Después de ejecutado todos los procedimientos almacenados cierro la
> > aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
> > asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
> > SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
> > memoria del SQL Server 2000 desde Visual Basic .Net?
> >
Respuesta Responder a este mensaje
#4 Miguel Acevedo
18/06/2008 - 20:16 | Informe spam
Una pregunta mas y disculpa las molestias, que hace SQL Server cuando se le
limita el uso de memoria, borra procesos almacenados en la memoria para
reutilizar el espacio o mas bien usa espacio en disco duro?

Gracias.

"Gux (MVP)" wrote:

No se puede liberar selectivamente la memoria de SQL Server que es usada por
procedimientos. Considere usar sp_configure para que SQL Server no use más de
cierto tope de memoria.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Miguel Acevedo" wrote:

> Gracias por la sugerencia, lo que sucede es que estamos hablando de
> servidores que manejan varias aplicaciones y su uso es bastante delicado esto
> no permite estar reiniciando los servicios, por otra parte me gustaría poder
> libera de la memoria cada store procedure que mande a ejecutar desde mi
> aplicación.
>
> Gracias de antemano por la ayuda que puedan darme.
>
> "Gux (MVP)" wrote:
>
> > SQL Server trata de usar lo máximo de memoria que pueda siempre.
> >
> > Lo que usted puede hacer es configurar a SQL Server para que no consuma más
> > de un cierto tamaño de memoria (vea el uso de sp_configure en los Books
> > Online).
> >
> > Si una vez que usted termina la aplicación, no hay más aplicaciones que usen
> > al SQL Server, usted puede detener el servicio SQL para liberar memoria. O si
> > lo prefiere, reiniciar el servicio. Puede usar el comando de línea NET
> > START/STOP para eso.
> >
> > Gustavo Larriera, Microsoft MVP
> > http://www.linkedin.com/in/gustavolarriera
> > Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
> >
> >
> >
> > "Miguel Acevedo" wrote:
> >
> > > Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
> > > en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
> > > Server 2000, la ejecución de estos procedimientos almacenados consume mucha
> > > memoria. Después de ejecutado todos los procedimientos almacenados cierro la
> > > aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
> > > asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
> > > SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
> > > memoria del SQL Server 2000 desde Visual Basic .Net?
> > >
Respuesta Responder a este mensaje
#5 Gux (MVP)
18/06/2008 - 21:15 | Informe spam
La idea de limitra la memoria a consumir por SQL Server es para evitar que
consuma memoria excesiva, que es bueno para SQL Server pero puede ser malo
para el servidor Windows y las demás aplicaciones ejecutando en el mismo
servidor.

Cuando SQL Server tiene un tope de memoria dispone de menos espacio para la
creación de objetos y áreas de uso interno (buffers, caches, memoria para
planes de ejecución, conecciones, etc.) por lo cual si la memoria es escasa,
dinámicamente debe sustituir objetos "viejos" en memoria por nuevos objetos
vivos. Los objetos viejos se persisten en disco hasta que se vuelven a
necesitar.

El resultado final es que el rendimiento es menor versus la estabilidad
general del servidor. Cuando el servidor está dedicado a SQL Server, se suele
permitir que SQL Server consuma toda la memoria que su gula desee :-)

Si le interesan los detalles del consumo de memoria en vivo, le recomiendo
jugar con el comando DBCC MEMORYSTATUS:

INF: Using DBCC MEMORYSTATUS to Monitor SQL Server Memory Usage
http://support.microsoft.com/kb/271624

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Miguel Acevedo" wrote:

Una pregunta mas y disculpa las molestias, que hace SQL Server cuando se le
limita el uso de memoria, borra procesos almacenados en la memoria para
reutilizar el espacio o mas bien usa espacio en disco duro?

Gracias.

"Gux (MVP)" wrote:

> No se puede liberar selectivamente la memoria de SQL Server que es usada por
> procedimientos. Considere usar sp_configure para que SQL Server no use más de
> cierto tope de memoria.
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Miguel Acevedo" wrote:
>
> > Gracias por la sugerencia, lo que sucede es que estamos hablando de
> > servidores que manejan varias aplicaciones y su uso es bastante delicado esto
> > no permite estar reiniciando los servicios, por otra parte me gustaría poder
> > libera de la memoria cada store procedure que mande a ejecutar desde mi
> > aplicación.
> >
> > Gracias de antemano por la ayuda que puedan darme.
> >
> > "Gux (MVP)" wrote:
> >
> > > SQL Server trata de usar lo máximo de memoria que pueda siempre.
> > >
> > > Lo que usted puede hacer es configurar a SQL Server para que no consuma más
> > > de un cierto tamaño de memoria (vea el uso de sp_configure en los Books
> > > Online).
> > >
> > > Si una vez que usted termina la aplicación, no hay más aplicaciones que usen
> > > al SQL Server, usted puede detener el servicio SQL para liberar memoria. O si
> > > lo prefiere, reiniciar el servicio. Puede usar el comando de línea NET
> > > START/STOP para eso.
> > >
> > > Gustavo Larriera, Microsoft MVP
> > > http://www.linkedin.com/in/gustavolarriera
> > > Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
> > >
> > >
> > >
> > > "Miguel Acevedo" wrote:
> > >
> > > > Estoy usando una aplicación creada en Visual Basic .Net. Desde la aplicación
> > > > en .Net ejecuto varios procedimientos almacenados en una base de datos en SQL
> > > > Server 2000, la ejecución de estos procedimientos almacenados consume mucha
> > > > memoria. Después de ejecutado todos los procedimientos almacenados cierro la
> > > > aplicación (creada en Visual Basic .Net) y se libera la memoria del proceso
> > > > asociado a la aplicación de .Net pero NO SE LIBERA LA MEMORIA DEL PROCESO DE
> > > > SQL SERVER 2000 (sqlservr.exe). ¿Existe una manera de mandar a liberar la
> > > > memoria del SQL Server 2000 desde Visual Basic .Net?
> > > >
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida