Saltar al contenido

Cómo actualizar un ensamblado CLR sin quitar el ensamblado de SQL Server

Solución:

Solución 1:

Creo que estas buscando alter assembly. Desde BOL:

Si se especifica la cláusula FROM, ALTER ASSEMBLY actualiza el ensamblado con respecto a las últimas copias de los módulos proporcionados. Debido a que puede haber funciones CLR, procedimientos almacenados, desencadenadores, tipos de datos y funciones agregadas definidas por el usuario en la instancia de SQL Server que ya están definidas en el ensamblado, la instrucción ALTER ASSEMBLY las vuelve a vincular a la última implementación del ensamblado. Para lograr esta revinculación, los métodos que se asignan a funciones CLR, procedimientos almacenados y desencadenadores aún deben existir en el ensamblado modificado con las mismas firmas. Las clases que implementan tipos definidos por el usuario CLR y funciones agregadas definidas por el usuario aún deben satisfacer los requisitos para ser un tipo o agregado definido por el usuario.

Uno de los ejemplos en la misma página parece funcionar:

ALTER ASSEMBLY ComplexNumber 
FROM 'C:Program FilesMicrosoft SQL Server90ToolsSamples1033EngineProgrammabilityCLRUserDefinedDataTypeCSComplexNumberobjDebugComplexNumber.dll' 

Solucion 2:

Para agregar a la respuesta de Ben Thul, esto se puede lograr de forma remota con bastante facilidad a través de la GUI de SQL Server Management Studio.

  1. En el Explorador de objetos para su base de datos -> Programabilidad, haga clic con el botón derecho en Ensamblados y seleccione ‘Nuevo ensamblaje …’.

  2. Busque su DLL actualizado.

  3. En lugar de hacer clic en “Aceptar” (que fallará, ya que ya existe un ensamblado con el mismo nombre), haga clic en “Secuencia de comandos” en la parte superior de la ventana Nuevo ensamblaje.

    Se le colocará en una consulta SQL que incluye una línea ‘CREAR ENSAMBLE’ seguida de un blob enorme que es la DLL que acaba de seleccionar.

  4. ¡Cambie ‘CREAR’ a ‘ALTERAR’ y luego ejecute!

El script también creó una línea de ‘AUTORIZACIÓN’ para mí que tuve que eliminar antes de ejecutar; su kilometraje puede variar.

Espero que esto ayude a alguien más sin acceso al sistema de archivos a sus servidores.

Con suerte, Microsoft hará de esta una operación de primera clase en SSMS algún día, pero esta es una solución bastante fácil hasta que lo hagan.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *