Pergunta

Tenho um pequeno aplicativo que usa a mesma API que os exemplos do PowerScript para atualizar um banco de dados de um dacpac (aplicativo da camada de dados).

Para fazê-lo funcionar em um servidor Windows 2008 sem nenhuma ferramenta SQL Server instalada, tive que consultar várias dlls e escolher "Copiar local" nessas dlls para colocá-las em minha pasta de compilação. Isso funciona bem.

Agora, quero chamar a mesma API de uma função de trabalho no Azure. Mas quando eu o executo (com as mesmas dlls) eu obtenho

"System.IO.FileLoadException: Não foi possível carregar o arquivo ou montagem 'Microsoft.SqlServer.BatchParser.dll' ou uma de suas dependências. o o aplicativo falhou ao iniciar porque sua configuração lado a lado está incorreto. Por favor, consulte o log de eventos do aplicativo "

Funciona bem quando implanto no emulador local.

Ainda não consegui obter nada significativo dos registros (não tenho certeza se tenho meu diagnóstico correto).

O arquivo mencionado está no pacote publicado. Encontrei 2 versões do arquivo, mas a outra versão é de 32 bits e (compreensivelmente) recebo uma exceção BadFormat se tentar.

Aqui estão as dlls que estou me referindo:

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

Alguma ideia que estou perdendo?

Foi útil?

Solução

Acho que resolvi isso.Habilitei o acesso remoto à VM, o que significava que tinha acesso aos eventos do aplicativo.Depois de executar minha função de trabalho, recebi um erro no visualizador de eventos dizendo que não foi possível encontrar microsoft.vc80.crt.

Não encontrei uma dll com esse nome, mas encontrei

microsoft.vc80.crt.manifest 

nesta pasta:

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

Ele aponta para três outras dlls que também incluí:

msvcr80.dll
msvcp80.dll
msvcm80.dll

Só executei a atualização uma vez até agora, mas espero que isso esteja feito agora.Se eu encontrar / corrigir mais problemas, irei atualizar aqui.

Espero que isso ajude alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top