2009-02-05 8 views
12

Esta es la situación:¿Cómo actualizo un ensamblaje y sus ensamblajes dependientes en MS-SQL?

Tengo un Trigger.dll y un Trigger.XmlSerializer.dll.

Utilizo CREATE ASSEMBLY para registrarlos en MSSQL.

Ahora, he compilado nuevas versiones de ambos.

Quiero usar ALTER ASSEMBLY para actualizarlos, sin embargo, solo puede actualizar uno a la vez. Si intenta actualizar uno que tiene una dependencia, se queja. ¿Cuál es el truco para hacer esto?

No quiero soltar y volver a crear como tengo que soltar todos los desencadenadores, etc. y hay tiempo de inactividad de la base de datos.

+0

¿cuál es su versión sql? – Avram

Respuesta

5

según el microsoft support puede usarlo de manera trucada.

Notas

  • Estos pasos actualización o disminución conjunto A en el escenario que se describe en el "una Cómo actualizar o degradar el montaje" sección.
  • Este ejemplo supone que las versiones de los dos conjuntos son 1.0.0.0 y los conjuntos están escritos en C#. Cuando sigue estos pasos, intenta actualizar el ensamblaje A y el ensamblado B a la versión 2.0.0.0.

Para actualizar o degradar el ensamblaje A, siga estos pasos.

  1. Copia de seguridad de la versión 1.0.0.0 del conjunto B en una carpeta.
  2. Modifique y luego recompile el conjunto B a la versión 2.0.0.0.
  3. Utilice la instrucción ALTER ASSEMBLY para actualizar el ensamblado B en SQL Server 2005.
  4. Modifique y luego recompile el ensamblado A en la versión 2.0.0.0. Cuando haga esto, haga referencia a la versión 1.0.0.0 del ensamblado B desde la copia de seguridad que realizó en el paso 1. Para hacerlo, use la herramienta del compilador Csc.exe junto con el modificador/reference. Por ejemplo, use el siguiente comando: csc/destino: library /out:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs /reference:"BackupFolder\AssemblyB.dll " Nota Para verificar la versión del ensamblado B en los metadatos del ensamblado A, abra el conjunto A utilizando la utilidad Ildasm.exe. Luego, verifique la información de metadatos para el ensamblado al que se hace referencia en la sección MANIFEST.
  5. Utilice la instrucción ALTER ASSEMBLY para actualizar el ensamblado A en SQL Server 2005.
1

Me temo que tirar la mesa y volver a crearla es la única manera.

La razón principal de esto es que los valores almacenados en un tipo en un ensamblaje, no se pueden usar si actualiza el ensamblado a una nueva versión.

0

dos sugerencias:

1) En general se pueden evitar mediante el uso de las dependencias ILMerge para incrustar e internalizar ellos. Por lo tanto, la declaración de modificación del ensamblado debería ser suficiente en la mayoría de los casos. Aún no lo he intentado con SQLCLR pero lo probaría.

2) ¿Tal vez los ensamblados de serialización XML no son necesarios?This article suggests it is only necessary when calling external web services inside SQL Server. En sí mismo un diseño cuestionable a menos que sea una de esas personas que desea alojar todos sus servicios comerciales dentro del producto MS SQL Server, en lugar de simplemente escribir sus propios servicios independientes en Windows (mucho más fácil de instalar, administrar y mantener), es decir, más patrón n-Tier que "patrón de datos hace todo" anti-patrón. Como su DLL se llama Triggers.dll, no sugiere que declare ningún tipo o es un proxy de servicio web. Si me perdí alguna otra razón para utilizar serializadores XML, entonces es suficiente, por favor explique sobre esto por interés.

Cuestiones relacionadas