Los procedimientos almacenados le permiten almacenar su código sql en una ubicación fuera de la aplicación. esto le da la capacidad de:
- cambiar el código SQL sin tener que recompilar/redistrubuting la aplicación
- tienen múltiples aplicaciones utilizan el mismo procedimiento almacenado para acceder a los mismos datos.
- Restrinja a los usuarios el acceso a las tablas de lectura/escritura directamente en la base de datos.
- Desde una perspectiva de desarrollo, también permite a los DBA/programadores de bases de datos trabajar en código sql sin tener que pasar por el código de la aplicación para trabajar en él. (separación de responsabilidades esencialmente).
¿Los procedimientos almacenados protegen contra los ataques de inyección? En su mayoría, sí. En el servidor sql puede crear procedimientos almacenados que no son efectivos contra esto, principalmente mediante el uso de sp_executesql. Ahora bien, esto no significa que sp_executesql es un agujero de seguridad, solo significa que se deben tomar más precauciones al usarlo.
Esto tampoco significa que los procedimientos almacenados son la única forma de protegerse de esto. Puede usar sql parameritizado para realizar la misma tarea de proteger contra la inyección sql.
Estoy de acuerdo con otras personas Los procedimientos almacenados pueden ser engorrosos, pero también tienen sus ventajas. Donde trabajo, tenemos probablemente 20 bases de datos de producción diferentes por varias razones (no preguntes). Trabajo en un subconjunto de quizás tres, y mi compañero de equipo y yo conocemos a esos tres muy bien. ¿Cómo nos ayudan los procedimientos almacenados?La gente acude a nosotros y cuando necesitan extraer esa información de esas bases de datos, podemos obtenerla para ellos. No tenemos que pasar horas explicando los esquemas y qué datos están des-normalizados. Es una capa de abstracción que nos permite programar el código más eficiente contra las bases de datos que conocemos. Si este no es el caso para usted, entonces tal vez los procedimientos almacenados no sean el camino a seguir, pero en algunos casos pueden agregar un gran valor.
http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx –
No estoy de acuerdo con Bouma en eso. Los ORM tienen su lugar en el desarrollo de software, al igual que los procedimientos almacenados. Escribir uno u otro completamente parece una mala postura para tomar. El póster original dijo que es "nuevo en SQL" y, como tal, debe aprender todo lo que pueda acerca de los procesos almacenados y orm, de esa forma puede tomar una decisión educada para CADA PROYECTO en el que trabaje, que es adecuado para la situación actual. . –
Re: sprocs son mal artículo: RUBBISH 1) ALL SQL es frágil - no importa dónde esté, los cambios del modelo requieren que se actualice (incluye el código de la aplicación) 2) Onion Defense, donde la seguridad está en capas. 3) Rendimiento: muéstrame un cursor que funciona más lento que un bucle FOR en el idioma que elijas, y te mostraré una instrucción SQL que necesita una puesta a punto extrema. –