Performance SQL Server

05/09/2005 - 20:17 por Tumba | Informe spam
Hola, otra vez solicitando ayuda. queria saber si me pueden dar una mano para
optimizar el servidor SQL Server ya que esta teniendo problemas para resolver
consultas que antes lo hacia sin problemas.

Tengo un Bucle que recorre una tabla temporal (esta echo con un WHILE porque
estaba con cursores) el problema es que en el recorrido se hace un SQL
Dinamico y se manda a ejecutar unos stored para unos 250 registros. este
Stored tiene problema de bloqueos (deadlocks) lo que hicimos es generar los
stored Procedure que llama para devuelvan un valor sin hacer consultas para
ver cual es el que tenia problemas y nos encontramos que tarda 22 segundos en
hacer el recorrido de los 250 registros llamando a los SP que no devuelven
valores (dummy) ¿Puede ser que demore tanto? ¿como puedo detectar si el
Servidor tiene problemas?

Tambien me gustaria su opinion a pros y contra de reemplazar cursores con
bucles WHILE de una tabla temporal.
EJ:

WHILE (Select Count(*) From #Cargos) > 0
BEGIN
SELECT TOP 1 @idCargo = idCargo, @idUbicacion = idUbicacion


END

DELETE From #Cargos
 

Leer las respuestas

#1 Eleazar
05/09/2005 - 23:06 | Informe spam
Hola solo una observacion (en el ejemplo que nos muestras)
dentro del ciclo nunca eliminas el registro que obtuviste en esa pasada es
decir
antes del END
Delete From #Cargos Where idCargo = @idCargo And idUbicacion = @idUbicacion

WHILE (Select Count(*) From #Cargos) > 0
BEGIN
SELECT TOP 1 @idCargo = idCargo, @idUbicacion = idUbicacion


END

DELETE From #Cargos



"Tumba" escribió en el mensaje
news:
Hola, otra vez solicitando ayuda. queria saber si me pueden dar una mano


para
optimizar el servidor SQL Server ya que esta teniendo problemas para


resolver
consultas que antes lo hacia sin problemas.

Tengo un Bucle que recorre una tabla temporal (esta echo con un WHILE


porque
estaba con cursores) el problema es que en el recorrido se hace un SQL
Dinamico y se manda a ejecutar unos stored para unos 250 registros. este
Stored tiene problema de bloqueos (deadlocks) lo que hicimos es generar


los
stored Procedure que llama para devuelvan un valor sin hacer consultas


para
ver cual es el que tenia problemas y nos encontramos que tarda 22 segundos


en
hacer el recorrido de los 250 registros llamando a los SP que no devuelven
valores (dummy) ¿Puede ser que demore tanto? ¿como puedo detectar si el
Servidor tiene problemas?

Tambien me gustaria su opinion a pros y contra de reemplazar cursores con
bucles WHILE de una tabla temporal.
EJ:

WHILE (Select Count(*) From #Cargos) > 0
BEGIN
SELECT TOP 1 @idCargo = idCargo, @idUbicacion = idUbicacion


END

DELETE From #Cargos



Preguntas similares