www.informatizate.net
www.informatizate.net // informatizate@informatizate.net Ver Artículos Página Inicial

Accediendo al .NET Framework desde Store Procedures en SQL 2005

Jhon Henry Benites Mestanza

Ingeniero de Sistemas, Trans Solutions Systems
Gerente de Desarrollo, Seymos Perú
MCP - MCDBA - MCSD.net
Expositor Microsoft User Group - Chiclayo


informatizate(at)informatizate(dot)net
Julio 19, del 2005
Introdución

Estando tan próximo el lanzamiento oficial de las versiones 2005 de Visual Studio .NET y SQL Server en nuestro país, este artículo pretende explorar una de las características más innovadoras de la próxima versión de SQL Server: La Creación de Procedimientos Almacenados y Funciones en SQL Server utilizando los lenguajes del .NET Framework Desarrollo y Administración de Base de Datos Si el trabajo que realizas combina actividades tanto de administración de base de datos como de desarrollo, seguro que estas familiarizado con lo que es el CLR(Common Language Runtime) del Framework .NET, pero si en tu trabajo solo desempeñas tareas de administración de base de datos quizás aún no lo estas. Seguramente hasta ahora no le has prestado demasiada atención porque creías que esto solo era algo concerniente a los desarrolladores, este concepto está tendiendo a cambiar ya que en las próximas versiones tanto de SQL Server como de VS.net será importante y ventajoso comprender y saber utilizar de manera oportuna y eficiente el CLR indistintamente del papel que desempeñes en tu trabajo.
La Nueva versión de SQL Server incluirá el CLR como parte del motor de SQL, esto lo podemos apreciar en la siguiente figura:


C# y VB.net en SQL Server

Cada vez el Visual Studio integra más herramientas que permiten la manipulación y la ejecución de distintas tareas contra el servidor de base de datos, de igual manera en el próximo release de SQL Server, se tendrá un entorno mucho más integrado y familiar para desarrolladores, para esto solo hay que ver la interfaz que posee, por ejemplo, el Managment Studio de SQL 2005, es un entorno con muchas más funcionalidades para desarrolladores.
En SQL 2000 y en versiones previas podíamos crear los distintos objetos de base de datos tales como procedimientos almacenados, funciones o triggers utilizando T-SQL, con la versión de SQL que será liberada este año, estaremos en capacidad de crear estos y otros objetos ya no solo utilizando el T-SQL, sino también C# y VB.net. El SQL 2005 ha sido creado, en una parte muy significativa, justamente con estos lenguajes.
SQL 2005 expone la funcionalidad del .NET framework permitiéndonos realizar, entre otras cosas, lo siguiente:

  • Crear procedimientos almacenados y triggers utilizando C# o VB.net e invocar estos procedimientos de la misma manera como se hace para los procedimientos T-SQL.
  • Crear funciones basadas en CLR, ya sea en C# o VB.net e invocarlas de la misma manera como se hace para las f unciones de T-SQL.
  • Crear UDTs(Tipos Definidos por Usuario) basados en CLR y utilizarlos para definir tablas y reglas de negocio.

Procedimientos almacenados extendidos

En SQL 2000 y versiones previas se podía acceder a código externo mediante los llamados procedimientos almacenados extendidos (extended procedures(xp), basados en C/C++), algunos de estos invocaban a DLLs precompiladas. Esto es usado cuando se desea realizar tareas ciertamente complejas, como por ejemplo cálculos matemáticos complejos, acceder a funcionalidad expuesta por el sistema operativo o realizar tareas que demanden un fuerte trabajo de la CPU, es decir tareas en las cuales el T-SQL es insuficiente e incapaz de poder realizarlas por sí solo.
El uso de los procedimientos almacenados extendidos tenía ciertas desventajas, el código que se ejecutaba tenía que ser un código en el que el SQL Server confiara plenamente, y además el hecho de ser un código no administrado hacía que estos se ejecutaran en el mismo espacio de memoria que el SQL Server, esto traía consigo el riesgo de ocasionar algún error en el SQL Sever y hacer que este se colgara. Digamos que los reemplazantes modernos de los xp son precisamente los Procedimientos basados en CLR.
Algunas situaciones en las que utilizar el CLR sería una buena alternativa a los ya clásicos procedimientos basados en T-SQL, serían las siguientes:

  • Reemplazando o ampliando la funcionalidad de extensos y complejos procedimientos almacenados, especialmente los que realizan cálculos matemáticos complejos o fórmulas de negocio complejas.
  • Procedimientos que necesitan acceder a algunas estructuras de datos externas que no tienen una interface tradicional de acceso a datos. El uso del CLR permite interactuar directamente con la estructura de datos externa, algo que no podría hacerse con el T-SQL. Por ejemplo se podría acceder a un archivo de MS Project para actualizar complejas programaciones de tareas.
  • Realizar algoritmos complejos. Por ejemplo algoritmos geográficos de mapeo.
  • Realizar complejos cálculos de ingeniería.


Probablemente algunos desarrolladores hayan implementado procedimientos almacenados extendidos (xp) para todos estos casos, sería una muy buena práctica reescribir todos estos, mediante los nuevos procedimientos basados en CLR, esto ya sería código administrado.

Página 1 Página 2


© 2002-2005 Grupo informatizate. Derechos Reservados
Prohibida la reproducción total o parcial en cualquier formato sín previa autorización.
En linea, desde el 27 de Noviembre del 2002