Pregunta

Tengo una pequeña aplicación que usa la misma API que los ejemplos de powerscript para actualizar una base de datos desde un dacpac (aplicación de nivel de datos).

Para que funcione en un servidor Windows 2008 sin ninguna herramienta de SQL Server instalada, tuve que hacer referencia a muchas dlls y elegir "Copiar local" en esas dlls para ponerlas en mi carpeta de compilación. Esto funciona bien.

Ahora quiero llamar a la misma API desde un rol de trabajador en Azure. Pero cuando lo ejecuto (con los mismos dlls) obtengo

"System.IO.FileLoadException: no se pudo cargar el archivo o ensamblado 'Microsoft.SqlServer.BatchParser.dll' o una de sus dependencias. los la aplicación no ha podido iniciarse porque su configuración en paralelo Es incorrecto. Consulte el registro de eventos de la aplicación "

Funciona bien cuando lo implemento en un emulador local.

Todavía no he podido obtener nada significativo de los registros (no estoy seguro si tengo mis diagnósticos correctos).

El archivo mencionado está en el paquete publicado. Encontré 2 versiones del archivo, pero la otra versión es de 32 bits y (comprensiblemente) obtengo una excepción de BadFormat si la intento.

Estas son las DLL a las que me refiero:

ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.CSharp
Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.ReportViewer.ProcessingObjectModel, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.SqlServer.BatchParser
Microsoft.SqlServer.BatchParserClient
Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Diagnostics.STrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Dmf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Dac, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacSerialization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SmoMetadataProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SqlParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.ServiceBrokerEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlClrProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.ServiceRuntime
Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System
System.Configuration
System.Core
System.Data
System.Data.DataSetExtensions
System.Data.Entity.Design
System.Deployment
System.Drawing
System.Windows.Forms
System.Xml
System.Xml.Linq
WindowsBase

¿Alguna idea de lo que me falta?

¿Fue útil?

Solución

Creo que he resuelto esto.Permití el acceso remoto a la VM, lo que significaba que tenía acceso a los eventos de la aplicación.Después de ejecutar mi función de trabajador, recibí un error en el visor de eventos que decía que no podía encontrar microsoft.vc80.crt.

No encontré una dll con ese nombre, pero encontré

microsoft.vc80.crt.manifest 

en esta carpeta:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Update Cache\KB2528583\ServicePack\x64

Apunta a otras 3 DLL que también incluí:

msvcr80.dll
msvcp80.dll
msvcm80.dll

Solo he ejecutado la actualización una vez hasta ahora, pero espero que esto esté listo ahora.Si encuentro o soluciono más problemas, actualizaré aquí.

Espero que esto ayude a alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top