Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Common Language Runtime (CLR) es el corazón de Microsoft .NET Framework y proporciona el entorno de ejecución para todo el código de .NET Framework. El código que se ejecuta dentro de CLR se conoce como código administrado. CLR proporciona varias funciones y servicios necesarios para la ejecución de programas, que incluyen la compilación Just-In-Time (JIT), la asignación y administración de memoria, el forzado de la seguridad de tipos, el control de excepciones, la administración de subprocesos y la seguridad. Consulte el SDK de .NET Framework para obtener más información.
Con CLR hospedado en Microsoft SQL Server (denominado 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. Dado que el código administrado se compila en código nativo antes de la ejecución, puede lograr aumentos significativos del rendimiento en algunos escenarios.
El código administrado usa la seguridad de acceso al código (CAS) para evitar que los ensamblados realicen determinadas operaciones. SQL Server usa CAS para ayudar a proteger el código administrado y evitar el riesgo del sistema operativo o del servidor de bases de datos.
Ventajas de la integración clR
Transact-SQL está diseñado específicamente para el acceso directo a los datos y la manipulación en la base de datos. Aunque Transact-SQL excelsa en el acceso y la administración de datos, no es un lenguaje de programación completo. Por ejemplo, Transact-SQL no admite matrices, colecciones, bucles for-each, desplazamiento de bits o clases. Aunque algunas de estas construcciones se pueden simular en Transact-SQL, el código administrado tiene compatibilidad integrada con estas construcciones. Dependiendo de la situación, estas características pueden proporcionar una razón de peso para implementar cierta funcionalidad de base de datos en el código administrado.
Microsoft Visual Basic .NET y Microsoft Visual C# ofrecen funcionalidades orientadas a objetos, como la encapsulación, la herencia y el polimorfismo. El código relacionado se puede organizar ahora con facilidad en las clases y espacios de nombres. Cuando trabaja con grandes cantidades de código de servidor, esto le permite organizar y mantener el código con mayor facilidad.
El código administrado es más adecuado que Transact-SQL para cálculos y lógica de ejecución complicada, y ofrece una amplia compatibilidad con muchas tareas complejas, como el control de cadenas y las expresiones regulares. Con la funcionalidad que se encuentra en la biblioteca de .NET Framework, tiene acceso a miles de clases y rutinas pregeneradas. Se puede acceder fácilmente 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, etc.
Nota:
Aunque muchas de estas clases están disponibles para su uso desde el código CLR en SQL Server, las que no son adecuadas para el uso del lado servidor (por ejemplo, clases de ventanas), no están disponibles. Para obtener más información, vea Bibliotecas de .NET Framework compatibles.
Uno de las ventajas del código administrado es la seguridad de tipos o la garantía de que el código tiene acceso a los tipos solo de maneras bien definidas y permitidas. Antes de que se ejecute el código administrado, CLR comprueba que el código es seguro. Por ejemplo, el código se comprueba para asegurarse de que no se lee memoria que no se ha escrito anteriormente. CLR también puede ayudar a garantizar que el código no manipula la memoria no administrada.
La integración CLR proporciona el potencial para el rendimiento mejorado. Para obtener información, consulte Rendimiento de la integración clR.
Elegir entre Transact-SQL y código administrado
Al escribir procedimientos almacenados, desencadenadores y funciones definidas por el usuario, una decisión que debe tomar es si se debe usar Transact-SQL tradicional o un lenguaje de .NET Framework como Visual Basic .NET o Visual C#. Use Transact-SQL cuando el código realice principalmente el acceso a datos con poca o ninguna lógica de procedimientos. Use el código administrado para las funciones con uso importante de CPU y procedimientos que presentan una lógica compleja o si desea utilizar la BCL de .NET Framework.
Elegir entre la ejecución en el servidor y la ejecución en el cliente
Otro factor de la decisión sobre si usar Transact-SQL o código administrado es donde desea que resida el código, el equipo servidor o el equipo cliente. Tanto Transact-SQL como código administrado se pueden ejecutar en el servidor. Esto sitúa el código y los datos juntos y le permite aprovechar la capacidad de procesamiento del servidor. Por otro lado, es posible que desee evitar colocar tareas intensivas del procesador en el servidor de bases de datos. La mayoría de los equipos cliente actualmente son muy eficaces, y es posible que desee aprovechar esta potencia de procesamiento colocando tanto código como sea posible en el cliente. El código administrado se puede ejecutar en un equipo cliente, mientras que Transact-SQL no.
Elección entre procedimientos almacenados extendidos y código administrado
Los procedimientos almacenados extendidos se pueden crear para realizar funciones que no sean posibles con procedimientos almacenados de Transact-SQL. Sin embargo, los procedimientos almacenados extendidos pueden poner en peligro la integridad del proceso de SQL Server, mientras que el código administrado que se comprueba que es seguro para tipos no puede. Además, la administración de memoria, la programación de subprocesos y fibras, y los servicios de sincronización se integran más profundamente entre el código administrado de CLR y SQL Server. Con la integración clR, tiene una manera más segura que los procedimientos almacenados extendidos para escribir los procedimientos almacenados que necesita para realizar tareas que no son posibles en Transact-SQL. Para obtener más información sobre la integración clR y los procedimientos almacenados extendidos, consulte Rendimiento de la integración clR.
Véase también
Instalación del .NET Framework
Arquitectura de la integración clR
Acceso a datos desde objetos de base de datos CLR
Introducción a la integración de CLR