Es bueno usar CLR dentro de SQLServer2005

Bueno esta fue la primer pregunta que me hice cuando lo vi en la beta1 , la verdad que es un tema bien discutible y sobre todo para aquellos que son bien tradicionales y solo usan la base de datos con tablas , índices y quizás algunos Stores Procedures.


Bueno mi opinión es que si las cosas están es para usarlas no? ahora la pregunta seria donde y como.


Con CLR dentro de SQL2005 puedo generar:


  • Stores Procedures
  • Funciones
  • Tipos de datos
  • Funciones de agregación
  • Triggers

Las funciones de agregación y los tipos de datos “solo” se pueden hacer vía CLR y no TSQL, el resto es viable hacerlo de ambas maneras.


Bueno pareciera ser entonces que el CLR me es muy útil solamente para estas 2 cosas que en versiones anteriores no tenía la posibilidad de hacer, pues bien, es una muy buena idea usar el CLR para ello, cuántas veces hemos querido crear nuestro propio tipo de datos, por ej. EMAIL o hasta el tipo de datos hora no, sabemos que SQL tiene el tipo de datos Datetime que incluye fecha y hora.


Bueno con las funciones de agregación pasa algo similar, quizás necesitemos hacer nuestra propia función de promedio, me ha tocado implementar en un cliente que hacia producción de piezas tener una función de agregación para calcular los tiempos Standard de los productos, este cálculo era por medio de una terrible formula


Pero que sucede con el resto, sería buena idea usarlos en SP, UDF y triggers? bueno claro que si también pero no abusar, SQL es eficiente y muy bueno con TSQL así que todo lo que podamos resolver con TSQL hagámoslo con él, pero sabemos que TSQL no es un lenguaje de programación y que muchas veces necesitamos hacer cosas más complejas que con TSQL son  muy difíciles o imposibles de hacer.


Un ejemplo de esto sería el de tener una función que comprima texto, imaginemos que queremos guardar imágenes dentro de una base de datos (ya hablaremos en otro post de esto) pero no queremos que ocupen tanto, entonces podríamos tener una función de CLR dentro del SQLServer donde al recibir el parámetro por ej. image lo comprima y lo guarde así en la base de datos, luego tener otra función para hacer la operatoria inversa no.


Bueno esta también sería una excelente manera de implementar quizás CLR.


Como podrán ver CLR no es tan malo como algunos piensan, ahora que cosas quizás no sea buena idea implementar? una seria por ej.: tratar de implementar un trigger para control de auditorías, esto no es necesario hacerlo desde CLR , implementar un tipo de datos llamado Cliente como si fuere un objeto.


En resumen , CLR es un valor agregado y no un reemplazo de TSQL.


Me gustaría saber las experiencias de ustedes y vuestras opiniones, aquí abajo les dejo un link de cómo desarrollar el tipo de datos Hora con CLR en SQL2005


http://www.levelextreme.net/ViewPageArticle.aspx?Session=5A6E4C49615932576F55303D206F5130434B657132707152546E786A4D7372526A47673D3D


 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>