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.
- Con Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Ensamblados: propiedades
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.
- Con Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Ensamblados: propiedades
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.
- Con Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Eliminar objetos
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.