Ensamblados: implementación

Se aplica a:SQL Server

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

  • Administración de versiones de ensamblado

Crear ensamblados

Los ensamblados se crean en SQL Server mediante la instrucción CREATE ASSEMBLY de Transact-SQL o en el SQL Server Management Studio mediante el Editor asistido por ensamblados. Además, la implementación de un SQL Server Project en Microsoft Visual Studio registra un ensamblado en la base de datos que se especificó para el proyecto. Para más información, consulte Deploying CLR Database Objects.

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 en SQL Server Management Studio mediante el Editor asistido por 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 ensamblado más adelante en este tema.

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

  • Cambiar la visibilidad del ensamblado. Los ensamblados visibles están disponibles para hacer referencia a 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 están 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 SQL Server Management Studio.

Para quitar un ensamblado mediante Transact-SQL

Para quitar un ensamblado mediante SQL Server Management Studio

De forma predeterminada, todos los ensamblados creados en SQL Server están deshabilitados de la ejecución. Puede usar la opción clr enabled del procedimiento almacenado del sistema de sp_configure para deshabilitar o habilitar la ejecución de todos los ensamblados cargados 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, consulte clr enabled Server Configuration Option( Opción de configuración del servidor).

Para deshabilitar y habilitar la ejecución de ensamblados

Administrar versiones de ensamblados

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

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

La cláusula WITH UNCHECKED DATA de la instrucción ALTER ASSEMBLY indica SQL Server actualizar incluso los ensamblados en los que dependen los datos persistentes de 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 en el ensamblado, ya sea directa o indirectamente, mediante funciones o métodos de Transact-SQL.

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

Precaución

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 las rutinas y tipos subyacentes cuando se actualice el ensamblado CLR. 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.

Solo los miembros del db_owner y db_ddlowner rol fijo de base de datos pueden ejecutar ALTER ASSEMBLY mediante la cláusula WITH UNCHECKED DATA.

SQL Server envía un mensaje al registro de eventos de la aplicación Windows que el ensamblado se ha modificado con datos no comprobados en las tablas. SQL Server, a continuación, marca las tablas que contengan datos dependientes del ensamblado como si tuvieran datos sin marcar. La columna has_unchecked_assembly_data de la vista de catálogo sys.tables contiene el valor 1 para las tablas que contienen datos no activados y 0 para tablas sin datos desactivados.

Para resolver la integridad de los datos no comprobados, ejecute DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS en cada tabla que tenga datos no comprobados. Si se produce un error en DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS, debe eliminar las filas de tabla que no son válidas o modificar el código de ensamblado para solucionar problemas y, a continuación, emitir instrucciones ALTER ASSEMBLY adicionales.

ALTER ASSEMBLY cambia la versión de ensamblado. La referencia cultural y el token de clave pública del ensamblado siguen siendo los mismos. SQL Server no permite registrar versiones diferentes 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 específicas mediante la directiva de publicador o la directiva de administrador para todo el equipo, debe realizar una de las siguientes acciones:

  • 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, se producirá un error al intentar cargar una nueva versión de ensamblado en la instancia de SQL Server.

Para actualizar la versión de un ensamblado

Consulte también

Ensamblados (motor de base de datos)
Obtener información acerca de los ensamblados