Share via


Implementar ensamblados

En este tema se proporciona información acerca de las áreas siguientes para ayudarle a implementar ensamblados y trabajar con ellos en la base de datos:

  • Crear ensamblados

  • Modificar ensamblados

  • Quitar, deshabilitar y habilitar ensamblados

  • Administrar versiones de ensamblados

Crear ensamblados

Los ensamblados se crean en SQL Server mediante la instrucción CREATE ASSEMBLY de Transact-SQL, o bien en SQL Server Management Studio mediante el editor asistido de ensamblados. Además, la implementación de un proyecto de SQL Server en Microsoft Visual Studio registra un ensamblado en la base de datos especificada para el proyecto. Para obtener más información, vea Implementar objetos de base de datos de CLR.

Para crear un ensamblado mediante Transact-SQL

Para crear un ensamblado mediante SQL Server Management Studio

Modificar ensamblados

Los ensamblados se modifican en SQL Server mediante la instrucción ALTER ASSEMBLY de Transact-SQL, o bien en SQL Server Management Studio mediante el editor asistido de ensamblados. Se puede modificar un ensamblado cuando se desea hacer lo siguiente:

  • Cambiar la implementación del ensamblado cargando una versión más reciente de los binarios del ensamblado. Para obtener más información, vea Administrar versiones de ensamblados más adelante en este mismo tema.

  • Cambiar el conjunto de permisos del ensamblado. Para obtener más información, vea Diseñar ensamblados.

  • Cambiar la visibilidad del ensamblado. Los ensamblados visibles están disponibles para hacer referencia a los mismos en SQL Server. Los invisibles no están disponibles, aunque se hayan cargado en la base de datos. De forma predeterminada, los ensamblados cargados en una instancia de SQL Server son visibles.

  • Agregar o quitar un archivo de depuración o de origen asociado con el ensamblado.

Para modificar un ensamblado mediante Transact-SQL

Para modificar un ensamblado mediante SQL Server Management Studio

Quitar, deshabilitar y habilitar ensamblados

Los ensamblados se quitan mediante la instrucción DROP ASSEMBLY de Transact-SQL o mediante SQL Server Management Studio.

Para quitar un ensamblado mediante Transact-SQL

Para quitar un ensamblado mediante SQL Server Management Studio

De forma predeterminada, ningún ensamblado creado en SQL Server se puede ejecutar. Puede utilizar la opción clr enabled del procedimiento almacenado del sistema sp_configure para deshabilitar o habilitar la ejecución de todos los ensamblados que se cargan en SQL Server. Al deshabilitar la ejecución de ensamblados se impide la ejecución de funciones, procedimientos almacenados, desencadenadores, agregados y tipos definidos por el usuario CLR (Common Language Runtime), y se detienen los que se están ejecutando. El hecho de deshabilitar la ejecución no deshabilita la capacidad de crear, alterar o quitar ensamblados. Para obtener más información, vea clr enabled (opción).

Para deshabilitar y habilitar la ejecución de ensamblados

Administrar versiones de ensamblados

Cuando un ensamblado se carga en una instancia de SQL Server, se almacena y administra en los catálogos de sistema de la base de datos. Las modificaciones de la definición del ensamblado realizadas en Microsoft .NET Framework se deben propagar al ensamblado almacenado en el catálogo de la base de datos.

Si desea modificar un ensamblado, debe emitir una instrucción ALTER ASSEMBLY para actualizar el ensamblado en la base de datos. De este modo se actualizará el ensamblado a la copia más reciente de los módulos .NET Framework que almacenan su implementación.

La cláusula WITH UNCHECKED DATA de la instrucción ALTER ASSEMBLY indica a SQL Server que actualice incluso los ensamblados de los que dependen los datos almacenados en la base de datos. En concreto, se debe especificar WITH UNCHECKED DATA si existe alguno de los elementos siguientes:

  • Columnas calculadas persistentes que hacen referencia a métodos del ensamblado, ya sea directa o indirectamente, mediante funciones o métodos de Transact-SQL.

  • Columnas con el tipo definido por el usuario CLR que dependen del ensamblado, y el tipo implementa un formato de serialización UserDefined (distinto de Native).

Nota de advertenciaAdvertencia

Si no se especifica WITH UNCHECKED DATA, SQL Server intentará evitar que ALTER ASSEMBLY se ejecute si la nueva versión de ensamblado afecta a los datos existentes de tablas, índices u otros sitios permanentes. Sin embargo, SQL Server no garantiza que las columnas calculadas, los índices, las vistas indizadas o las expresiones sean coherentes con rutinas y tipos subyacentes cuando el ensamblado CLR se actualice. Al ejecutar ALTER ASSEMBLY, tenga cuidado de que no se produzcan discrepancias entre el resultado de una expresión y los valores basados en esa expresión almacenada en el ensamblado.

Sólo los miembros de la función fija de base de datos db_owner y db_ddlowner pueden ejecutar ALTER ASSEMBLY con la cláusula WITH UNCHECKED DATA.

SQL Server expone un mensaje al registro de eventos de aplicación de Windows en el que indica que se ha modificado el ensamblado con datos no comprobados en las tablas. A continuación, SQL Server indica que las tablas que contienen datos que dependen del ensamblado tienen datos no comprobados. La columna has_unchecked_assembly_data de la vista de catálogo sys.tables incluye el valor 1 para las tablas que incluyen datos no comprobados y el valor 0 para las tablas sin datos no comprobados.

Para resolver la integridad de los datos no comprobados, ejecute DBCC CHECKTABLE en cada tabla que tenga datos no comprobados. Si DBCC CHECKTABLE provoca un error, deberá eliminar las filas de la tabla que no sean válidas o modificar el código del ensamblado para solucionar los problemas y, a continuación, escribir instrucciones ALTER ASSEMBLY adicionales.

ALTER ASSEMBLY cambia la versión de ensamblado. La referencia cultural y el símbolo (token) de clave pública del ensamblado siguen siendo los mismos. SQL Server no permite registrar distintas versiones de un ensamblado con el mismo nombre, referencia cultural y clave pública.

Interacciones con la directiva de equipos para los enlaces de versión

Si las referencias a ensamblados almacenados en SQL Server se redirigen a versiones determinadas mediante una directiva de edición o una directiva de administrador de equipos, debe realizar una de las acciones siguientes:

  • Asegúrese de que la nueva versión a la que se redirigen las referencias se encuentra en la base de datos.

  • Modifique las instrucciones de los archivos de directivas externas del equipo o la directiva de edición para asegurarse de que hacen referencia a la versión específica que se encuentra en la base de datos.

De lo contrario, los intentos de carga de una nueva versión de ensamblado en la instancia de SQL Server provocarán errores.

Para actualizar la versión de un ensamblado