Compartir vía


Implementación de ensamblados

Se aplica a: SQL Server

En este artículo se proporciona información sobre las siguientes áreas para ayudarle a implementar y trabajar con ensamblados en la base de datos:

  • Crear ensamblados
  • Modificar ensamblados
  • Quitar, deshabilitar y habilitar ensamblados
  • Administración de versiones de ensamblado

Creación de ensamblados

Los ensamblados se crean en SQL Server mediante la instrucción Transact-SQL CREATE ASSEMBLY o 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 más información, consulte Deploying CLR Database Objects.

Modificación de ensamblados

Los ensamblados se modifican en SQL Server mediante la instrucción Transact-SQL ALTER ASSEMBLY o en SQL Server Management Studio mediante el Editor asistido por ensamblados.

Puede modificar un ensamblado cuando desee realizar las siguientes acciones:

  • Cambiar la implementación del ensamblado cargando una versión más reciente de los binarios del ensamblado. Para obtener más información, consulte Administración de versiones de ensamblado más adelante en este artículo.

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

  • Cambiar la visibilidad del ensamblado. Los ensamblados visibles están disponibles para hacer referencia a en SQL Server. Los ensamblados novisibles no están disponibles, incluso si se cargan 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.

Quitar, deshabilitar y habilitar ensamblados

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

De forma predeterminada, todos los ensamblados creados en SQL Server están deshabilitados de la ejecución. Puede usar la clr enabled opción del procedimiento almacenado del sp_configure sistema para deshabilitar o habilitar la ejecución de todos los ensamblados que se cargan en SQL Server. Deshabilitar la ejecución de ensamblados impide que se ejecuten funciones, procedimientos almacenados, desencadenadores, agregados y tipos definidos por el usuario de Common Language Runtime (CLR) y se detiene cualquier que se esté ejecutando actualmente. Deshabilitar la ejecución del ensamblado no deshabilita la capacidad de crear, modificar o quitar ensamblados. Para obtener más información, vea Configuración del servidor: clr enabled.

Para obtener más información, consulte sp_configure.

Administrar versiones de ensamblado

Cuando se carga un ensamblado en una instancia de SQL Server, el ensamblado se almacena y administra dentro de 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.

Cuando tenga que modificar un ensamblado, debe emitir una ALTER ASSEMBLY instrucción para actualizar el ensamblado en la base de datos. Esta instrucción actualiza el ensamblado a la última copia de los módulos de .NET Framework que contienen su implementación.

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

  • Columnas calculadas persistentes que hacen referencia a métodos en el ensamblado, directa o indirectamente, a través de funciones o métodos transact-SQL.

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

Precaución

Si WITH UNCHECKED DATA no se especifica, SQL Server intenta evitar ALTER ASSEMBLY que se ejecute si la nueva versión del ensamblado afecta a los datos existentes en tablas, índices u otros sitios persistentes. 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. Tenga cuidado al ejecutar ALTER ASSEMBLY para asegurarse de que no hay coincidencia entre el resultado de una expresión y un valor basado en esa expresión almacenada en el ensamblado.

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

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

Para resolver la integridad de los datos no activados, ejecute DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS en cada tabla que tenga datos sin marcar. Si DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS se produce un error, 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 más ALTER ASSEMBLY instrucciones.

ALTER ASSEMBLY cambia la versión del ensamblado. La referencia cultural y el símbolo (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 todo el equipo para el enlace de versiones

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 de todo el equipo, debe realizar cualquiera 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 produce un error al intentar cargar una nueva versión de ensamblado en la instancia de SQL Server.

Para obtener más información, vea ALTER ASSEMBLY.