¿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

#1 Nuno Santos
01/08/2005 - 13:52 | Informe spam
No sabia que se puede hacer eso
Pero imagino, como tu dijistes que es ejecutado el SP de acuerdo con el User
ligado...

Nuno Santos


Nuno Santos
nunos7[REMOVER]@hotmail.com

"Jorge Serrano [MVP VB]"
wrote in
message 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
#2 Maxi
01/08/2005 - 13:52 | Informe spam
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
#3 Jorge Serrano [MVP VB]
01/08/2005 - 14:38 | Informe spam
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
#4 Maxi
01/08/2005 - 15:00 | Informe spam
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
#5 Alejandro Mesa
01/08/2005 - 15:56 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida