Cursores en Sql

13/06/2009 - 15:20 por Claudio | Informe spam
Hola grupo,

estuve leyendo por ahi que los cursores de sql (al menos en ciertos
ambientes), no son muy recomendables. En nuestro caso , c/vez que trazamos
el sql (porque algun proceso se nos pone muy lento), ocurre que siempre hay
un cursor de por medio. Ahora bien, nosotros desde nuestras aplicaciones
VB6, no abrimos ningun cursor, entonces la pregunta es : porque se abre un
cursor sobre el sql sino lo hacemos desde la aplicacion ?, hay algun seteo
para sql y decirle que no lo haga por defecto o tiene que ver en la forma
que conectamos a la Db (ADODB) y como cargamos los recordset
(adodb.recordset) ?. Cuando miramos la traza, vemos una instruccion "exec
sp_cursoropen... " y luego nuestra consulta, pero no esta abierto desde el
codigo. No entiendo.

Muchas gracias
Salu2
Claudio

ccarozzi@acofarazul.com.ar

Preguntas similare

Leer las respuestas

#1 Maxi
13/06/2009 - 16:49 | Informe spam
Claudio creo que primero deberias comprender los distintos tipos de cursores
que hay.
Dentro de SQL puedes hacer cursores con TSQL usando DECLARE Cursor
(estos son los que detectas que tenes?)
Tambien hay cursores del lado de la aplicacion y por ultimo cusores API (los
usa el ODBC)

No son todos los mismos tipos de cursores, el 1 es el mas lento de todo y el
que muchos de nosotros indicamos que habria que evitar, el segundo hace
laburar menos al motor pero seguro que tu aplicacion tendra mas
procesamiento, son mas optimos que el primero porque recorres en la
aplicacion, los ultimos son API y por lo general esta muy bien optimizados.

Cuando tu ves cursor open estas viendo cuando se incia un cursor, ahora bien
yo no analizaria eso sino el codigo en si. veria los procesos que estan
lentos y veria porque, quizas usen cursores de TSQL o bien esten mal hechas
las consultas y procesos que no usa indices o bien no tienes indices

Espero haber sido claro y no haberte confundido mas :(





Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"Claudio" escribió en el mensaje de
noticias:e$
Hola grupo,

estuve leyendo por ahi que los cursores de sql (al menos en ciertos
ambientes), no son muy recomendables. En nuestro caso , c/vez que trazamos
el sql (porque algun proceso se nos pone muy lento), ocurre que siempre
hay un cursor de por medio. Ahora bien, nosotros desde nuestras
aplicaciones VB6, no abrimos ningun cursor, entonces la pregunta es :
porque se abre un cursor sobre el sql sino lo hacemos desde la aplicacion
?, hay algun seteo para sql y decirle que no lo haga por defecto o tiene
que ver en la forma que conectamos a la Db (ADODB) y como cargamos los
recordset (adodb.recordset) ?. Cuando miramos la traza, vemos una
instruccion "exec sp_cursoropen... " y luego nuestra consulta, pero no
esta abierto desde el codigo. No entiendo.

Muchas gracias
Salu2
Claudio




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida