Duda simple sobre bloqueos

29/07/2003 - 13:44 por naimps | Informe spam
Hola.

Si en un SP pongo el tipo de bloqueo a UNCOMMITTED, ¿tengo que
restaurar al de defecto al finalizar el SP o es por conexión?

Y otra dudilla de na: supongamos un SP A que llama a dos SP (B y C).
Si B cambia el tipo de bloqueo a UNCOMMITTED, ¿qué pasa con A y con C?

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
29/07/2003 - 14:10 | Informe spam
Copiado de los BOL:
SET TRANSACTION ISOLATION LEVEL
Controla el comportamiento de bloqueo predeterminado de todas las
instrucciones SELECT de Microsoft® SQL ServerT ejecutadas en una conexión.


Si estás utilizando esta sentencia, el nivel de aislamiento afectará a
la conexión que ejecute ese procedimiento almacenado. Otra cosa es que
utilizaras sugerencias de bloqueo ( por ejemplo, ... FROM tabla WITH
(NOLOCK) ), las cuales sólo afectan a la tabla referenciada


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

escribió en el mensaje
news:
Hola.

Si en un SP pongo el tipo de bloqueo a UNCOMMITTED, ¿tengo que
restaurar al de defecto al finalizar el SP o es por conexión?

Y otra dudilla de na: supongamos un SP A que llama a dos SP (B y C).
Si B cambia el tipo de bloqueo a UNCOMMITTED, ¿qué pasa con A y con C?


Respuesta Responder a este mensaje
#2 naimps
29/07/2003 - 16:47 | Informe spam
Muchas gracias a los dos.

Y disfruta de las vacas, tú que tienes.

On Tue, 29 Jul 2003 14:41:33 +0200, "Carlos Sacristan"
<csacristanARROBAocasoPUNTOes> wrote:


Uuuuuuups... no me fijé en que nuestro amigo se refería a ejecutar esa
sentencia dentro de un procedimiento almacenado :S

Efectivamente, el comportamiento de set transaction isolation level
dentro de un procedimiento almacenado es como dice Miguel. Siento haber
llevado a confusión, pero como tengo las vacaciones a la vuelta de la
esquina (tres diítas), mi neurona se está empezando a aclimantar :-)

Lo dicho, que la respuesta más correcta es la que dio Miguel (otra
cervecita más para el botel, compi)



Un saludo

Respuesta Responder a este mensaje
#3 Miguel Egea
29/07/2003 - 16:51 | Informe spam
la tengo puntualmente apuntada en mi pda ;-)


Un Saludo
Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:

Uuuuuuups... no me fijé en que nuestro amigo se refería a ejecutar esa
sentencia dentro de un procedimiento almacenado :S

Efectivamente, el comportamiento de set transaction isolation level
dentro de un procedimiento almacenado es como dice Miguel. Siento haber
llevado a confusión, pero como tengo las vacaciones a la vuelta de la
esquina (tres diítas), mi neurona se está empezando a aclimantar :-)

Lo dicho, que la respuesta más correcta es la que dio Miguel (otra
cervecita más para el botel, compi)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Miguel Egea" escribió en el mensaje
news:#6up#
> Voy a intentar escribir algo sobre esto para PortalSQl. En principio y


sin
> entrar en demasiados detalles puedes consultar esto.
>
> create proc prueba
> as
> begin
> set transaction isolation level repeatable read
> dbcc useroptions
> end
> go
> y probar esta ejecución
> go
> set transaction isolation level read committed
> go
> dbcc useroptions
> exec prueba
> dbcc useroptions
> go
> Verás que el procedimiento se ejecuta con el nivel de aislamiento
> determinado, pero como todas las intrucciones set su efecto desaparece


en
el
> momento que el procedimiento termina.
>
> Después puedes probar esto
> create proc prueba2
> as
> begin
> set transaction isolation level read committed
> dbcc useroptions
> exec prueba
> dbcc useroptions
> end
> go
> exec prueba2
> go
> verás que el comportamiento es el mismo es decir el procedimiento prueba
se
> ejecuta bajo su nivel de aislamiento y el siguiente se ejecuta sobre el
> suyo.
>
>
>
> Espero que te sirva.
>
> Saludos
> Miguel Egea
> PortalSLQ
> http://www.configuracionesintegrales.com/miguele
> Sql-Server MVP
> escribió en el mensaje
> news:
> > Hola.
> >
> > Si en un SP pongo el tipo de bloqueo a UNCOMMITTED, ¿tengo que
> > restaurar al de defecto al finalizar el SP o es por conexión?
> >
> > Y otra dudilla de na: supongamos un SP A que llama a dos SP (B y C).
> > Si B cambia el tipo de bloqueo a UNCOMMITTED, ¿qué pasa con A y con C?
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Eladio Rincón
29/07/2003 - 17:18 | Informe spam
jejeje,

qué disfrutes que te las has ganado a pulso !!! :-)

Eladio Rincón
MCP, SQL Server MVP
http://eu.webmatrixhosting.net/Eladio

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:

Uuuuuuups... no me fijé en que nuestro amigo se refería a ejecutar esa
sentencia dentro de un procedimiento almacenado :S

Efectivamente, el comportamiento de set transaction isolation level
dentro de un procedimiento almacenado es como dice Miguel. Siento haber
llevado a confusión, pero como tengo las vacaciones a la vuelta de la
esquina (tres diítas), mi neurona se está empezando a aclimantar :-)

Lo dicho, que la respuesta más correcta es la que dio Miguel (otra
cervecita más para el botel, compi)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Miguel Egea" escribió en el mensaje
news:#6up#
> Voy a intentar escribir algo sobre esto para PortalSQl. En principio y


sin
> entrar en demasiados detalles puedes consultar esto.
>
> create proc prueba
> as
> begin
> set transaction isolation level repeatable read
> dbcc useroptions
> end
> go
> y probar esta ejecución
> go
> set transaction isolation level read committed
> go
> dbcc useroptions
> exec prueba
> dbcc useroptions
> go
> Verás que el procedimiento se ejecuta con el nivel de aislamiento
> determinado, pero como todas las intrucciones set su efecto desaparece


en
el
> momento que el procedimiento termina.
>
> Después puedes probar esto
> create proc prueba2
> as
> begin
> set transaction isolation level read committed
> dbcc useroptions
> exec prueba
> dbcc useroptions
> end
> go
> exec prueba2
> go
> verás que el comportamiento es el mismo es decir el procedimiento prueba
se
> ejecuta bajo su nivel de aislamiento y el siguiente se ejecuta sobre el
> suyo.
>
>
>
> Espero que te sirva.
>
> Saludos
> Miguel Egea
> PortalSLQ
> http://www.configuracionesintegrales.com/miguele
> Sql-Server MVP
> escribió en el mensaje
> news:
> > Hola.
> >
> > Si en un SP pongo el tipo de bloqueo a UNCOMMITTED, ¿tengo que
> > restaurar al de defecto al finalizar el SP o es por conexión?
> >
> > Y otra dudilla de na: supongamos un SP A que llama a dos SP (B y C).
> > Si B cambia el tipo de bloqueo a UNCOMMITTED, ¿qué pasa con A y con C?
> >
> >
>
>


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