Uso de Datasets Typados frente a Procedimientos almacenados.

04/05/2005 - 18:12 por Cecilio | Informe spam
Buenas:

Me gustaría que alguien me diera su opinión personal o me indicara algún
artículo sobre, en que ocasiones es más conveniente utilizar procedimientos
almacenados y cuando podemos utilizar las ventajas y comodidad que nos
ofrecen los dataset tipados para actualizaciones, consultas etc.. sin que se
vea afectado el rendimiento.

Gracias y un Saludo

Preguntas similare

Leer las respuestas

#1 Braulio Diez
06/05/2005 - 10:31 | Informe spam
Hola,

Sobre procedimientos almacenados frente a consultas hechas sobre la
marcha: Siempre que puedas utiliza procedimientos almacenados por las
siguientes razones:

- Están ya compilados (en una consulta SQL hecha ad-hoc tienes que
compiliarla lo que consume tiempo, además que tiene que validarse... y puede
dar un error en ejecución).

- Están optimizados por el motor de Base de datos para que funcionen más
rápido.

- Te ahorras ataques de inyección, esto puede pasar en la siguiente
consulta add-hoc:


tenemos cuidado con lo caracteres especiales):

Admin'--

Tendríamos la siguiente consulta...

SELECT UserId WHERE LoginId= 'Admin'--' and Password = 'MyPAss'

Es decir SELECT UserId WHERE LoginId='Admin'

Acabamos de entrar como administradores sin saber la clave.

- Otro punto a favor de los stored procs es que te permiten poder cambiar
cosas del mismo sin tener que recompliar el código fuente de la aplicación
(mientras parametros de entrada y salida sean los mismos claro), con lo que
te permite más adelante modificar consultas sin recompilar.

etc.

Sobre DataSets tipados, creo que te referieres a crear datasets generados
a partir del esquema de base de datos, esto sobre todo te va a ahorrar muchos
errores a la hora de poner código, ya que puedes acceder a los campos de una
fila sabiendo de antemano su nombre y tipo (eso de acceder con comillas y
hacer casts... es una fuente de errores enorme).

Espero haberte sido un poquito de ayuda :-), buena suerte
Braulio

"Cecilio" escribió:

Buenas:

Me gustaría que alguien me diera su opinión personal o me indicara algún
artículo sobre, en que ocasiones es más conveniente utilizar procedimientos
almacenados y cuando podemos utilizar las ventajas y comodidad que nos
ofrecen los dataset tipados para actualizaciones, consultas etc.. sin que se
vea afectado el rendimiento.

Gracias y un Saludo



Respuesta Responder a este mensaje
#2 Marcos Mellibovsky
08/05/2005 - 18:39 | Informe spam
Queria aclarar que si bien muchas veces se ha dicho y yo lo creia, no es
real que en sqlserver lo Sp esten compilados y/o optimizados.
En el momento de crearlo se compila, pero esa compilación no queda en la
base de datos. Si paro el motor y lo arranco de nuevo se va a volver a
compilar (y optimizar) la primera vez que se ejecute el sp, al igual que con
cualquier consulta SQL.

Por otro lado si usa sentencia SQL parametrizadas tambien evito la
inyeccion.
LA consulta la deberia hacer asi:
"SELECT UserId WHERE LoginId = ? and Password = ?
y asignar los 2 parametros por medio del objeto command igual que lo haria
con un sp.

Esto no quiere decir que no sea ventajoso usar Sps, como dijo Braulio,
mucahs veces te evitan recompilar la aplicación y fundamentalmente porque
con SPs podes hacer que el usuario de la aplicacion no tenga ningun permisos
sobre las tablas (ni siquierea pueda hacer un select). El usurio solo tiene
permisos de ejecutar los SP. De esta manera tenes muy controlado que puede
hacer sobre las tablas porque solo puede ejecutar los sp que vos permitas

Saludos
Marcos Mellibovsky
MCAD - MCSD - MCSE - MCDBA
Cordoba - Argentina
Marcos

"Braulio Diez" escribió en el mensaje
news:
Hola,

Sobre procedimientos almacenados frente a consultas hechas sobre la
marcha: Siempre que puedas utiliza procedimientos almacenados por las
siguientes razones:

- Están ya compilados (en una consulta SQL hecha ad-hoc tienes que
compiliarla lo que consume tiempo, además que tiene que validarse... y


puede
dar un error en ejecución).

- Están optimizados por el motor de Base de datos para que funcionen más
rápido.

- Te ahorras ataques de inyección, esto puede pasar en la siguiente
consulta add-hoc:


tenemos cuidado con lo caracteres especiales):

Admin'--

Tendríamos la siguiente consulta...

SELECT UserId WHERE LoginId= 'Admin'--' and Password = 'MyPAss'

Es decir SELECT UserId WHERE LoginId='Admin'

Acabamos de entrar como administradores sin saber la clave.

- Otro punto a favor de los stored procs es que te permiten poder


cambiar
cosas del mismo sin tener que recompliar el código fuente de la aplicación
(mientras parametros de entrada y salida sean los mismos claro), con lo


que
te permite más adelante modificar consultas sin recompilar.

etc.

Sobre DataSets tipados, creo que te referieres a crear datasets


generados
a partir del esquema de base de datos, esto sobre todo te va a ahorrar


muchos
errores a la hora de poner código, ya que puedes acceder a los campos de


una
fila sabiendo de antemano su nombre y tipo (eso de acceder con comillas y
hacer casts... es una fuente de errores enorme).

Espero haberte sido un poquito de ayuda :-), buena suerte
Braulio

"Cecilio" escribió:

> Buenas:
>
> Me gustaría que alguien me diera su opinión personal o me indicara algún
> artículo sobre, en que ocasiones es más conveniente utilizar


procedimientos
> almacenados y cuando podemos utilizar las ventajas y comodidad que nos
> ofrecen los dataset tipados para actualizaciones, consultas etc.. sin


que se
> vea afectado el rendimiento.
>
> Gracias y un Saludo
>
>
>
Respuesta Responder a este mensaje
#3 Cecilio
09/05/2005 - 09:52 | Informe spam
Muchas Gracias a los 2.

Efectivamente, yo también había oido que el rendimiento era mucho mejor en
los procedimientos almacenados, sin embargo en este artículo

http://www.microsoft.com/spanish/ms...etdev2.asp

menciona que en las ultimas 2 versiones de SQL Server, el sistema ya compila
y cachea las consultas SQL igual que los procedimientos almacenados, con lo
que la mejora se centra fundamentalmente en la seguridad.


Un Saludo



"Marcos Mellibovsky" escribió en el mensaje
news:uCNMQv%
Queria aclarar que si bien muchas veces se ha dicho y yo lo creia, no es
real que en sqlserver lo Sp esten compilados y/o optimizados.
En el momento de crearlo se compila, pero esa compilación no queda en la
base de datos. Si paro el motor y lo arranco de nuevo se va a volver a
compilar (y optimizar) la primera vez que se ejecute el sp, al igual que
con
cualquier consulta SQL.

Por otro lado si usa sentencia SQL parametrizadas tambien evito la
inyeccion.
LA consulta la deberia hacer asi:
"SELECT UserId WHERE LoginId = ? and Password = ?
y asignar los 2 parametros por medio del objeto command igual que lo haria
con un sp.

Esto no quiere decir que no sea ventajoso usar Sps, como dijo Braulio,
mucahs veces te evitan recompilar la aplicación y fundamentalmente porque
con SPs podes hacer que el usuario de la aplicacion no tenga ningun
permisos
sobre las tablas (ni siquierea pueda hacer un select). El usurio solo
tiene
permisos de ejecutar los SP. De esta manera tenes muy controlado que puede
hacer sobre las tablas porque solo puede ejecutar los sp que vos permitas

Saludos
Marcos Mellibovsky
MCAD - MCSD - MCSE - MCDBA
Cordoba - Argentina
Marcos

"Braulio Diez" escribió en el mensaje
news:
Hola,

Sobre procedimientos almacenados frente a consultas hechas sobre la
marcha: Siempre que puedas utiliza procedimientos almacenados por las
siguientes razones:

- Están ya compilados (en una consulta SQL hecha ad-hoc tienes que
compiliarla lo que consume tiempo, además que tiene que validarse... y


puede
dar un error en ejecución).

- Están optimizados por el motor de Base de datos para que funcionen
más
rápido.

- Te ahorras ataques de inyección, esto puede pasar en la siguiente
consulta add-hoc:


tenemos cuidado con lo caracteres especiales):

Admin'--

Tendríamos la siguiente consulta...

SELECT UserId WHERE LoginId= 'Admin'--' and Password = 'MyPAss'

Es decir SELECT UserId WHERE LoginId='Admin'

Acabamos de entrar como administradores sin saber la clave.

- Otro punto a favor de los stored procs es que te permiten poder


cambiar
cosas del mismo sin tener que recompliar el código fuente de la
aplicación
(mientras parametros de entrada y salida sean los mismos claro), con lo


que
te permite más adelante modificar consultas sin recompilar.

etc.

Sobre DataSets tipados, creo que te referieres a crear datasets


generados
a partir del esquema de base de datos, esto sobre todo te va a ahorrar


muchos
errores a la hora de poner código, ya que puedes acceder a los campos de


una
fila sabiendo de antemano su nombre y tipo (eso de acceder con comillas y
hacer casts... es una fuente de errores enorme).

Espero haberte sido un poquito de ayuda :-), buena suerte
Braulio

"Cecilio" escribió:

> Buenas:
>
> Me gustaría que alguien me diera su opinión personal o me indicara
> algún
> artículo sobre, en que ocasiones es más conveniente utilizar


procedimientos
> almacenados y cuando podemos utilizar las ventajas y comodidad que nos
> ofrecen los dataset tipados para actualizaciones, consultas etc.. sin


que se
> vea afectado el rendimiento.
>
> Gracias y un Saludo
>
>
>




Respuesta Responder a este mensaje
#4 Alfredo Novoa
09/05/2005 - 11:00 | Informe spam
On Mon, 9 May 2005 09:52:27 +0200, "Cecilio"
wrote:

Muchas Gracias a los 2.

Efectivamente, yo también había oido que el rendimiento era mucho mejor en
los procedimientos almacenados, sin embargo en este artículo

http://www.microsoft.com/spanish/ms...etdev2.asp

menciona que en las ultimas 2 versiones de SQL Server, el sistema ya compila
y cachea las consultas SQL igual que los procedimientos almacenados, con lo
que la mejora se centra fundamentalmente en la seguridad.



Lo que es otro mito por que es mucho mejor garantizar la seguridad
usando vistas y permisos.


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