¿Quien se ejecuta? (SP)

01/08/2005 - 13:25 por Jorge Serrano [MVP VB] | Informe spam
Hola,

tengo una pequeña duda.

He importado un SP a mi base de datos SQL Server y éste se ha añadido
correctamente, sin embargo, he observado que tengo otro ya instalado también,
ya que ambos han sido instalados con usuarios diferentes.

sp_Prueba dbo 01/08/2005 00:12:23
sp_Prueba usuario1 01/08/2005 01:23:34

El caso es que la duda me viene ahora.
¿Cuál de los SPs se ejecutan en la ejecución de un proceso determinado?.

Quizás diréis que el usuario que ha realizado la conexión a la base de datos
desde la aplicación o proceso, pero ¿siempre?.

¿Alguna idea?.

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/

Preguntas similare

Leer las respuestas

#6 Jorge Serrano [MVP VB]
01/08/2005 - 16:31 | Informe spam
Se agradece muco Maxi, muchas gracias. :-)

Sobre las ejecuciones en DTS y SP, creo según algunas pruebas que hemos
hecho, que se ejecuta con dbo. Cuanto menos curioso... seguiré mirando pero
parece ser así.

:-)

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/


"Maxi" wrote:

Hola Jorge, bien, bueno aqui al haber 2 "errores" lo que suecedera es que se
ejecuta el sp del user1 cuando inicies la sesion con el. Por eso hay 2
recomendaciones que te haria:

1) Crear los Sp para DBO
2) En la ejecucion de tu aplicacion incluir el propietario DBO para no
llevarte sorpresas

Con respecto al DTS, es verdad que para ejecutarlo lo hace con DBO, nunca lo
probe pero seguro que ejecutara el sp del DBO (si queres te lo confirmo a la
noche con algun ejemplito ;-)


Salu2
Maxi


"Jorge Serrano [MVP VB]"
escribió
en el mensaje news:
> Hola Maxi,
>
> yo tampoco creo que sea una buena idea tener sp propietarios en lugar de
> dbo, pero esto nos lo hemos encontrado hoy al hacer una supervisión y
> hemos
> visto que se han ejecutado mal algunas acciones y como los procesos se han
> estado ejecutando, la duda era saber que SP se ejecutaría en un momento
> dado.
> Yo considero tener todo con dbo, pero en este caso ha sido que no y más
> que
> arreglarlo, que eso está claro, es saber o conocer el posible alcance que
> ha
> podido haber. :-)
>
> El problema aún así, es que el sp no se lanza como dbo.sp_Prueba o
> usuario1.sp_Prueba, sino como sp_Prueba, por eso la duda de cuál
> ejecutaría
> de los dos.
>
> Otra circunstancia, es que la conexión con SQL Server se realiza desde la
> aplicación con el usuario1, por lo que lo normal al ejecutar el sp_Prueba
> es
> que lo hiciera bajo su usuario, pero en la aplicación, también se ejecutan
> DTSs y estos se lanzan sino me equivoco, bajo la supervisión del dbo, por
> lo
> que en este caso, un DTS que lance a su vez un SP (que se puede dar el
> caso),
> no se cuál de los dos SP lanzaría.
>
> Como veis, complico la cosa un poco, pero más que solucionar eso como
> digo,
> algo que está claro como hacerlo, es conocer lo que ha podido ocurrir en
> la
> ejecución de los procesos. Siempre que esto sea posible claro. :-)
>
> ¡Muchas gracias por todas las respuestas!
>
> Jorge Serrano Pérez
> Microsoft MVP VB.NET
> PortalVB.com
> http://www.portalvb.com/
> Weblog de Jorge Serrano
> http://weblogs.golemproject.com/jorge/
>
>
> "Maxi" wrote:
>
>> Hola Jorge, primero antes que nada te diria:
>>
>> Tener sp propietarios distintos a DBO no se si es una buena idea :(.
>> Ahora
>> con respecto a tu pregunta:
>>
>> Todo depende de como tengas el codigo, seguramente que usuario1
>> ejkecutara
>> sp usuario1 a menos que no este indicado otra cosa en el codigo, por ej
>> exec
>> dbo.sp. Si lo llamas solo por su nombre entonces ahi puedes tener un
>> problema. Ahora como recomendacion: No puedes dejar solo el Sp del DBO?
>>
>>
>> Salu2
>> Maxi
>>
>>
>> "Jorge Serrano [MVP VB]"
>>
>> escribió
>> en el mensaje news:
>> > Hola,
>> >
>> > tengo una pequeña duda.
>> >
>> > He importado un SP a mi base de datos SQL Server y éste se ha añadido
>> > correctamente, sin embargo, he observado que tengo otro ya instalado
>> > también,
>> > ya que ambos han sido instalados con usuarios diferentes.
>> >
>> > sp_Prueba dbo 01/08/2005 00:12:23
>> > sp_Prueba usuario1 01/08/2005 01:23:34
>> >
>> > El caso es que la duda me viene ahora.
>> > ¿Cuál de los SPs se ejecutan en la ejecución de un proceso
>> > determinado?.
>> >
>> > Quizás diréis que el usuario que ha realizado la conexión a la base de
>> > datos
>> > desde la aplicación o proceso, pero ¿siempre?.
>> >
>> > ¿Alguna idea?.
>> >
>> > Jorge Serrano Pérez
>> > Microsoft MVP VB.NET
>> > PortalVB.com
>> > http://www.portalvb.com/
>> > Weblog de Jorge Serrano
>> > http://weblogs.golemproject.com/jorge/
>>
>>
>>



Respuesta Responder a este mensaje
#7 Jorge Serrano [MVP VB]
01/08/2005 - 16:35 | Informe spam
Muchas gracias Alejandro.

Según hemos podido ver de las pruebas realizadas, el SP ejecutado es el del
dbo. :-)

¡Gracias a todos por vuestras respuestas!

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/


"Alejandro Mesa" wrote:

Jorge,

Vamos por paso.

Para que un usuario pueda executar un sp, este debe tener permiso de
ejecucion sobre el sp o ser el dueño del sp.

- Si el usuario conectado es el dueño, entonces si este es dbo, se ejecutara
dbo.p1, si no es dbo, entonces se ejecutara usuario1.p1

- Si el usuario no es dbo y tampoco es el dueño, entonces si este tiene
permiso para ejecutar ambos, se ejecutara dbo.p1. Si el usuario1 no tiene
permiso para ejecutar dbo.p1 entonces dara error porque cuando no se
qualifica el nombre del sp con el dueño, sql server buscara el sp
usuario2.p1, si no lo encuantra, buscara dbo.p1 y tratara de ejecutarlo pero
como el usuario2 no tiene permiso para ejecutar dbo.p1 entonces habra error.

Puedes hacer una prueba creando un sp usando un usuario dbo y otro sp con el
mismo nombre pero conectado con un usuario que no es dbo.

- si te conectas con un dbo, entonces si ejecutas

exec p1

se ejecutara dbo.p1

- si te conectas con un dbo, si ejecutas

exec usuario1.p1

se ejecutara el sp antes mencionado.

- si te conectas con otro usuario que no es dbo y que no sea el dueño, pero
que tenga permiso de ejecutar ambos, entonces si ejecutas

exec p1

se ejecutara dbo.p1. Si ejecutas

exec usuario1.p1

se ejecutara dicho sp. Ahora, si este usuario no tiene permiso para ejecutar
dbo.p1, cuando trate de ejecutar:

exec p1

sql server dara error, porque buscara usuario2.p1, al no encontrarlo buscara
dbo.p1 pero como usuario2 no tiene permiso para ejecutar dbo.p1 entonces dara
error. En este caso sql server nunca tratara de ejecutar usuario1.p1 y es
esta una de las causas por las que se pide que se qualifique el nombre del sp
con el nombre del dueño cuando se ejecuta un sp.


AMB

"Jorge Serrano [MVP VB]" wrote:

> Hola,
>
> tengo una pequeña duda.
>
> He importado un SP a mi base de datos SQL Server y éste se ha añadido
> correctamente, sin embargo, he observado que tengo otro ya instalado también,
> ya que ambos han sido instalados con usuarios diferentes.
>
> sp_Prueba dbo 01/08/2005 00:12:23
> sp_Prueba usuario1 01/08/2005 01:23:34
>
> El caso es que la duda me viene ahora.
> ¿Cuál de los SPs se ejecutan en la ejecución de un proceso determinado?.
>
> Quizás diréis que el usuario que ha realizado la conexión a la base de datos
> desde la aplicación o proceso, pero ¿siempre?.
>
> ¿Alguna idea?.
>
> Jorge Serrano Pérez
> Microsoft MVP VB.NET
> PortalVB.com
> http://www.portalvb.com/
> Weblog de Jorge Serrano
> http://weblogs.golemproject.com/jorge/
Respuesta Responder a este mensaje
#8 Maxi
01/08/2005 - 16:42 | Informe spam
Si, ya los DTS son por DBO y el sp seguro que tambien si lo llama el DTS
claro ;-)


Salu2
Maxi


"Jorge Serrano [MVP VB]"
escribió
en el mensaje news:
Se agradece muco Maxi, muchas gracias. :-)

Sobre las ejecuciones en DTS y SP, creo según algunas pruebas que hemos
hecho, que se ejecuta con dbo. Cuanto menos curioso... seguiré mirando
pero
parece ser así.

:-)

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/


"Maxi" wrote:

Hola Jorge, bien, bueno aqui al haber 2 "errores" lo que suecedera es que
se
ejecuta el sp del user1 cuando inicies la sesion con el. Por eso hay 2
recomendaciones que te haria:

1) Crear los Sp para DBO
2) En la ejecucion de tu aplicacion incluir el propietario DBO para no
llevarte sorpresas

Con respecto al DTS, es verdad que para ejecutarlo lo hace con DBO, nunca
lo
probe pero seguro que ejecutara el sp del DBO (si queres te lo confirmo a
la
noche con algun ejemplito ;-)


Salu2
Maxi


"Jorge Serrano [MVP VB]"

escribió
en el mensaje news:
> Hola Maxi,
>
> yo tampoco creo que sea una buena idea tener sp propietarios en lugar
> de
> dbo, pero esto nos lo hemos encontrado hoy al hacer una supervisión y
> hemos
> visto que se han ejecutado mal algunas acciones y como los procesos se
> han
> estado ejecutando, la duda era saber que SP se ejecutaría en un momento
> dado.
> Yo considero tener todo con dbo, pero en este caso ha sido que no y más
> que
> arreglarlo, que eso está claro, es saber o conocer el posible alcance
> que
> ha
> podido haber. :-)
>
> El problema aún así, es que el sp no se lanza como dbo.sp_Prueba o
> usuario1.sp_Prueba, sino como sp_Prueba, por eso la duda de cuál
> ejecutaría
> de los dos.
>
> Otra circunstancia, es que la conexión con SQL Server se realiza desde
> la
> aplicación con el usuario1, por lo que lo normal al ejecutar el
> sp_Prueba
> es
> que lo hiciera bajo su usuario, pero en la aplicación, también se
> ejecutan
> DTSs y estos se lanzan sino me equivoco, bajo la supervisión del dbo,
> por
> lo
> que en este caso, un DTS que lance a su vez un SP (que se puede dar el
> caso),
> no se cuál de los dos SP lanzaría.
>
> Como veis, complico la cosa un poco, pero más que solucionar eso como
> digo,
> algo que está claro como hacerlo, es conocer lo que ha podido ocurrir
> en
> la
> ejecución de los procesos. Siempre que esto sea posible claro. :-)
>
> ¡Muchas gracias por todas las respuestas!
>
> Jorge Serrano Pérez
> Microsoft MVP VB.NET
> PortalVB.com
> http://www.portalvb.com/
> Weblog de Jorge Serrano
> http://weblogs.golemproject.com/jorge/
>
>
> "Maxi" wrote:
>
>> Hola Jorge, primero antes que nada te diria:
>>
>> Tener sp propietarios distintos a DBO no se si es una buena idea :(.
>> Ahora
>> con respecto a tu pregunta:
>>
>> Todo depende de como tengas el codigo, seguramente que usuario1
>> ejkecutara
>> sp usuario1 a menos que no este indicado otra cosa en el codigo, por
>> ej
>> exec
>> dbo.sp. Si lo llamas solo por su nombre entonces ahi puedes tener un
>> problema. Ahora como recomendacion: No puedes dejar solo el Sp del
>> DBO?
>>
>>
>> Salu2
>> Maxi
>>
>>
>> "Jorge Serrano [MVP VB]"
>>
>> escribió
>> en el mensaje
>> news:
>> > Hola,
>> >
>> > tengo una pequeña duda.
>> >
>> > He importado un SP a mi base de datos SQL Server y éste se ha
>> > añadido
>> > correctamente, sin embargo, he observado que tengo otro ya instalado
>> > también,
>> > ya que ambos han sido instalados con usuarios diferentes.
>> >
>> > sp_Prueba dbo 01/08/2005 00:12:23
>> > sp_Prueba usuario1 01/08/2005 01:23:34
>> >
>> > El caso es que la duda me viene ahora.
>> > ¿Cuál de los SPs se ejecutan en la ejecución de un proceso
>> > determinado?.
>> >
>> > Quizás diréis que el usuario que ha realizado la conexión a la base
>> > de
>> > datos
>> > desde la aplicación o proceso, pero ¿siempre?.
>> >
>> > ¿Alguna idea?.
>> >
>> > Jorge Serrano Pérez
>> > Microsoft MVP VB.NET
>> > PortalVB.com
>> > http://www.portalvb.com/
>> > Weblog de Jorge Serrano
>> > http://weblogs.golemproject.com/jorge/
>>
>>
>>



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