Você está na página 1de 5

11-6-2018

Bautista García
Luis Enrique.
Grupo: 5701
CAPITULO 14
Introducción al Common Language Runtime
¿Es Transact-SQL va a desaparecer?
El lenguaje Transact-SQL es la manera más eficiente para recuperar y manipular los datos
almacenados en una base de datos relacional. El objetivo principal de SQL es para devolver los
resultados de una o más tablas que están combinadas utilizando uniones y sindicatos. También es
la mejor manera de insertar nuevas filas, actualizaciones existen-ing filas y eliminar filas en una tabla.
Desde el principio, SQL fue diseñada para operar con conjuntos de datos y nunca fue realmente
significaba para realizar tareas procesales.

.NET y el CLR
Los desarrolladores de software saben que el CLR de .NET de Microsoft es el núcleo de toda una
plataforma de desarrollo de aplicaciones. En términos simples, el CLR es simplemente un conjunto
de componentes que permiten instalar software y componentes personalizados para ejecutarse en
un equipo. Además de esta capacidad, el CLR también proporciona una red de seguridad para
asegurar que el software se ejecuta de forma segura, y eso no lo hace mal uso o desperdicio de
recursos del sistema.

Asambleas
Un ensamblado .NET es la unidad de despliegue en el mundo de .NET y contiene diversos
objetos de programa. Un ensamblado que contiene objetos de SQL CLR está construido
como una biblioteca de clases con una extensión de archivo .DLL. Un conjunto recién
construido realmente contiene semicompiled Lenguaje intermedio de Microsoft (MSIL) de
código. Un ensamblado se almacena en este estado semicompiled intermedio, de manera
que pueda ser compilado completamente en la forma más óptima cuando se ejecuta en el
equipo de destino, en lugar del equipo donde se desarrolló.

Espacios de nombres
Un espacio de nombres es una estructura de organización que se utiliza para las clases de grupo en
categorías manejables. Un espacio de nombre puede contener cualquier número de subordinar los
espacios de nombres que se utilizan para agrupar y gestionar las clases de objetos similares.

Clases
Una clase define un objeto de programación se utiliza para representar los datos y todas las
funciones que se pueden realizar con esos datos. Por ejemplo, una clase de cliente se puede utilizar
para encapsular todos los datos relativos a un cliente como nombre, dirección, número de teléfono
y cualquier otra cosa que usted podría pensar.

Métodos
Dentro de las clases, el código de programa puede definir varias cosas como miembros,
propiedades, estructuras, enumer-aciones, eventos y métodos.

SQL Server objetos CLR


Hemos sobrevivido durante un largo tiempo sin combinar la programación con bases de datos. Ha
impulsado la tecnología de negocios (y quizás, en algún grado, la tecnología ha impulsado negocios)
hasta el punto de que es nece-sario para elevar la barra. Ahora las aplicaciones empresariales
requieren algo más que la capacidad para poner la información en una base de datos para que
pueda llevarla a cabo. Los procesos empresariales más complejos requieren un complejo de la lógica
del programa, que va más allá del alcance de CRUD simple (''crear, leer, actualizar y eliminar'') base
de datos de opera-ciones.

La ejecución de los objetos se produce dentro del espacio de proceso de SQL Server, accord-ing
para las reglas y el contexto de seguridad de la base de datos y SQL Server. Portarse bien en este
entorno, se aplican ciertas restricciones:

 todo el código ensamblador debe ser de tipo seguro. Esto significa que todos los valores
intercambiados entre objetos con-formulario para tipos de datos estándar y debe declararse
explícitamente. El tiempo de ejecución no realizará ninguna conversión de tipos implícita de
un objeto a otro si los tipos no son compatibles.
 varios atributos de clase y de método se han agregado para admitir la funcionalidad de SQL
CLR, seguridad y características. Utilizando atributos independientes pueden representar la
asamblea incompatibles y no permitir que se ejecute.
 Todos estático (o compartido) miembros de datos debe ser de sólo lectura.
 SQL CLR no admite código con métodos Finalizer. Los ensamblados que contengan este
código no será permitido ejecutar.

Habilitación de SQL CLR


La característica SQL CLR está deshabilitado de forma predeterminada y debe habilitarse
explícitamente en el servidor de la base de datos. Esto se hace usando el procedimiento
almacenado del sistema sp_configure. Pase el valor de carácter clr habilitado en el primer argumento
y el valor numérico 1 (por cierto) en el segundo argumento. La configuración se aplica después de
ejecutar el comando reconfigure después de cambiar esta configuración.

Crear un conjunto de SQL CLR


Para explorar completamente el trabajo con SQL CLR, sería útil disponer de un conjunto con el que
trabajar. El siguiente ejercicio le guiará a través del proceso de crear una sencilla función que
devolverá la versión del sistema operativo del servidor cuando se llama desde un comando T-SQL:

Para seguir con este ejercicio, usted debe tener instalado Visual Studio 2008 con C#. Abra Visual
Studio 2008 y crear un nuevo proyecto seleccionando Nuevo proyecto en el menú Archivo

Adición de un ensamblado
Antes de definir cualquier objeto SQL CLR, el ensamblado .NET que contiene el código
ejecutable debe cargarse en la base de datos. Esto se realiza con la instrucción CREATE
ASSEMBLY. Tenga en cuenta que el conjunto de ALTER y DROP declaraciones de la
Asamblea también se añadieron para administrar estos objetos. En su forma más simple,
la sintaxis de la instrucción CREATE ASSEMBLY es como sigue:

Crear ensamblado <nombre de ensamblado>

Desde <source File path>

Con permiso_SET = <> conjunto de permisos

Tipos de datos compatibles


Como los procedimientos de programación de .NET se definen y luego integrado con SQL Server
objetos CLR, es crucial que todos los tipos de datos coincide con tipos compatibles. La mayoría de
tipos de datos de SQL Server son compatibles tipos nativos equivalente en .NET Framework. Tenga
en cuenta que las variables, los argumentos de método y valores devueltos pueden ser definidas
utilizando tipos nativas de .NET o los tipos de datos definidos en el

Espacio de nombres System.Data.SqlTypes. Los tipos que se encuentran en el espacio de nombres


System.Data.SqlTypes son equivalentes exactos que se asignan a cada tipo de SQL Server a través
de código de contenedor interno. No todos los tipos de SQL Server son compatibles, aunque
equivalentes. Si falla la ejecución, reportando una discrepancia de tipo de fundido o no es válida, es
probable que tenga un tipo de datos incompatible. La siguiente tabla muestra los tipos comunes de
SQL Server con .NET tipos equivalentes

Funciones definidas por el usuario


Cuando un estándar de Transact-SQL se ejecuta la función definida por el usuario, SQL Server utiliza
una mesa de trabajo para almacenar valores intermedios mientras se ejecuta una función con valores
de tabla. En cambio, una función SQL CLR sólo utilizará la memoria disponible en el servidor para
almacenar filas intermedias y de valores.

Las funciones escalares


Fuera de acceso a datos, hay algunas cosas que Transact-SQL no realiza muy eficazmente. La
matemática computacional, y funciones de manipulación de cadenas en Transact-SQL son limitados
y muy básico en comparación con las clases de .NET Framework.

Funciones con valores de tabla


Las funciones definidas por el usuario pueden ser utilizados para devolver conjuntos de resultados
con valores de tabla, muy similar a un procedimiento almacenado o una vista parametrizada. El
código de implementación de este tipo de función es un poco diferente de una función estándar de
.NET o método de rutina. Porque no se trata de una programación amplia referencia, un simple
ejemplo debería servir para dar un punto de partida e introducir los conceptos necesarios para apoyar
este tipo de esfuerzo de programación.

Procedimientos almacenados
Muchos de los sistemas actuales utilizan una variedad de procedimientos almacenados extendidos
que llaman a componentes COM y otras formas de código no administrado. Estos se conocen
como procedimientos almacenados extendidos y han sido usados por muchos años para realizar
operaciones que SQL Server no proporciona out-of-the-box.
Los agregados
La creación de formaciones personalizadas con código administrado es un proceso relativamente
complejo en comparación con lo que hemos visto hasta ahora. Esto es porque debe ser
implementado varios métodos que están llamados a construir el valor agregado como el conjunto de
resultados se rellena. A lo largo de este proceso, se inicializa la estructura agregada, los valores se
agregan y se pueden combinar con los previamente recogidos, y luego, finalmente, el valor resultante
se calcula y la estructura se desecha.

La seguridad de .NET
Antes de cualquier código personalizado puede ejecutar, la solicitud debe pasar a través de muchas
capas distintas de authentica-ción y permisos. En primer lugar, cualquier petición del usuario deben
ser autenticados por Windows (suponiendo que esté utilizando la seguridad integrada de Windows
para SQL Server) y, a continuación, SQL Server debe autenticar al usuario y conceder permisos de
nivel de objeto de la solicitud.

Fijación de SQL CLR


Objetos de SQL CLR pueden fijarse a distintos niveles. Después de considerar el acceso de un
usuario a la base de datos de servidor y los permisos concedidos o denegados dentro de SQL Server
para todos los objetos, se establecen permisos especiales de ejecución para los objetos de SQL
CLR. Esto proporciona al administrador una simple (pero efectiva) manto de control sobre cada
objeto CLR en la base de datos. Sin lidiando con las complejidades de la programación de objetos,
conjuntos de permisos de SQL CLR simplemente permitir distintos niveles de acceso a los
ensamblados administrados.

CLR en SQL Server conjuntos de permisos.


Para simplificar el modelo de seguridad para los ensamblados agregados a una base de datos, un
conjunto de tres niveles de permisos se definen dentro de SQL Server. Estos se utilizan para permitir
que los ensamblados para tener acceso a recursos que se sabe que son seguros. Estos ajustes son
ejecutados por restringir el acceso a la asamblea específica del sistema de tiempo de ejecución de
.NET Framework Class Libraries. El conjunto de permisos que se aplican cuando un conjunto de
SQL CLR es importado

Você também pode gostar