Exportar (0) Imprimir
Expandir todo

Introducción a la integración CLR de SQL Server

Common Language Runtime (CLR) es el núcleo de Microsoft .NET Framework y proporciona el entorno de ejecución de todo el código de .NET Framework. El código que se ejecuta en CLR se conoce como código administrado. El CLR proporciona diversas funciones y servicios necesarios para la ejecución de los programas, como compilación just-in-time (JIT), asignación y administración de memoria, imposición de la seguridad de tipos, control de excepciones, administración de subprocesos y seguridad.

Con el CLR alojado en Microsoft SQL Server (lo que se denomina integración CLR), puede crear procedimientos almacenados, desencadenadores, funciones definidas por el usuario, tipos definidos por el usuario y agregados definidos por el usuario en código administrado. Como el código administrado se compila a código nativo antes de su ejecución, en algunas situaciones puede conseguir aumentos significativos del rendimiento.

El código administrado utiliza seguridad de acceso a código (CAS), vínculos a código y dominios de aplicación para impedir que los ensamblados realicen determinadas operaciones. SQL Server 2005 utiliza CAS para ayudar a proteger el código administrado e impedir que el sistema operativo o el servidor de base de datos se pongan en peligro.

Ventajas de la integración CLR

Transact-SQL está específicamente diseñado para el acceso directo a los datos y su manipulación en la base de datos. Si bien Transact-SQL destaca en el acceso y la administración de los datos, no dispone de constructos de programación que faciliten la manipulación y el cálculo de los datos. Por ejemplo, Transact-SQL no admite matrices, colecciones, bucles for-each, desplazamiento de bits o clases. Aunque algunos de estos constructos se pueden simular en Transact-SQL, el código administrado ha integrado la compatibilidad con ellos. Dependiendo de la situación, estas características pueden proporcionar una razón de peso para implementar determinada funcionalidad de base de datos en código administrado.

Microsoft Visual Basic .NET y Microsoft Visual C# ofrecen capacidades orientadas a objetos, como encapsulado, herencia y polimorfismo. Ahora, el código relacionado se puede organizar fácilmente en clases y espacios de nombres. Si trabaja con grandes cantidades de código de servidor, esto le permitirá organizar y mantener de forma más sencilla el código.

El código administrado resulta más adecuado que Transact-SQL para cálculos y lógica de ejecución complejos y presenta una completa compatibilidad con muchas tareas complejas, como el control de cadenas y expresiones regulares. Con la funcionalidad hallada en la biblioteca de .NET Framework, dispone de acceso a miles de clases y rutinas preconstruidas de forma fácil desde cualquier procedimiento almacenado, desencadenador o función definida por el usuario. La biblioteca de clases base (BCL) incluye clases que proporcionan funcionalidad para la manipulación de cadenas, operaciones matemáticas avanzadas, acceso a archivos, criptografía, y mucho más.

NoteNota

Si bien muchas de estas clases están disponibles para su uso dentro del código CLR en SQL Server, aquellas que no sean adecuadas para utilizarlas en el servidor (por ejemplo, clases basadas en ventanas), no lo estarán.

Una de las ventajas del código administrado es que proporciona seguridad de tipos, o la garantía de que el código sólo tiene acceso a los tipos mediante métodos lícitos bien definidos. Antes de que se ejecute código administrado, el CLR comprueba que el código es seguro. Por ejemplo, el código se comprueba para asegurarse de que no se lee ninguna memoria que no se haya escrito anteriormente. El CLR puede ayudar también a garantizar que el código no manipula memoria no administrada.

Selección entre Transact-SQL y código administrado

A la hora de escribir procedimientos almacenados, desencadenadores y funciones definidas por el usuario, deberá decidir si utilizar el lenguaje Transact-SQL tradicional o un lenguaje de .NET Framework como Visual Basic .NET o Visual C#. Utilice Transact-SQL para el acceso a datos con poca o ninguna lógica de procedimientos. Utilice código administrado en funciones y procedimientos que consumen mucha CPU que se caracterizan por una lógica compleja, o si desea utilizar la biblioteca BCL de .NET Framework.

Selección entre ejecución en el servidor y ejecución en el cliente

Otro factor que deberá tener en cuenta a la hora de tomar la decisión de si utilizar Transact-SQL o código administrado es dónde le gustaría que residiera el código, en el equipo servidor o en el equipo cliente. Tanto Transact-SQL como el código administrado se pueden ejecutar en el servidor. Cuando esto ocurre, el código y los datos se colocan juntos uno del otro y es posible aprovechar la eficacia del procesamiento del servidor. Por otro lado, puede que desee evitar colocar en el servidor de base de datos tareas que consumen mucho procesador. La mayoría de los equipos cliente de hoy en día poseen una gran potencia y quizás pueda aprovechar esta eficacia de procesamiento si coloca en el cliente tanto código como sea posible. El código administrado se puede ejecutar en un equipo cliente mientras que Transact-SQL no.

Selección entre procedimientos almacenados extendidos y código administrado

Los procedimientos almacenados extendidos se pueden crear para realizar funcionalidad que no es posible con los procedimientos almacenados de Transact-SQL. No obstante, los procedimientos almacenados extendidos pueden comprometer la integridad del proceso SQL Server, y no ocurre así con el código administrado en el que se comprueba la seguridad de tipos. Además, la administración de memoria, la programación de subprocesos y fibras y los servicios de sincronización se integran de forma más profunda entre el código administrado de CLR y SQL Server. Con la integración CLR, dispone de una manera más segura y escalable que la que ofrecen los procedimientos almacenados extendidos de escribir los procedimientos almacenados que necesita para realizar tareas que no son posibles en Transact-SQL.

En la siguiente tabla se enumeran los temas de esta sección.

Tema Descripción

Habilitación de la integración CLR

Describe cómo habilitar la característica de integración CLR, que, de forma predeterminada, está desactivada.

Compilación e implementación de un ensamblado CLR

Describe cómo compilar e implementar un procedimiento almacenado administrado simple.

Seguridad de la integración CLR

Describe el modelo de seguridad de la integración CLR.

Depuración de un ensamblado CLR

Describe cómo depurar rutinas CLR con Visual Studio 2005.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft