#azure #data-tier-applications
#azure #приложения уровня данных
Вопрос:
У меня есть небольшое приложение, которое использует тот же API, что и примеры powerscript, для обновления базы данных из dacpac (приложения уровня данных).
Чтобы заставить его работать на сервере Windows 2008 без каких-либо установленных инструментов SQL Server, мне пришлось ссылаться на множество библиотек DLL и выбирать «Копировать локальные» для этих библиотек dll, чтобы поместить их в мою папку компиляции. Это работает нормально.
Теперь я хочу вызвать тот же API из рабочей роли в Azure. Но когда я запускаю его (с теми же библиотеками DLL) Я получаю
«System.IO.FileLoadException: не удалось загрузить файл или сборку «Microsoft.SQLServer.BatchParser.dll’ или одна из ее зависимостей. Не удалось запустить приложение, поскольку его параллельная конфигурация неверна. Пожалуйста, ознакомьтесь с журналом событий приложения «
Он отлично работает при развертывании в локальном эмуляторе.
Я еще не смог получить что-либо значимое из журналов (не уверен, правильно ли я провел диагностику).
Упомянутый файл находится в опубликованном пакете. Я нашел 2 версии этого файла, но другая версия 32-разрядная, и я (по понятным причинам) получаю исключение BadFormat, если попробую это сделать.
Вот библиотеки DLL, на которые я ссылаюсь:
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
Есть идеи, чего мне не хватает?
Ответ №1:
Я думаю, что я взломал это. Я включил удаленный доступ к виртуальной машине, что означало, что у меня был доступ к событиям приложения. После запуска моей рабочей роли я получил сообщение об ошибке в средстве просмотра событий, в котором говорилось, что он не может найти microsoft.vc80.crt.
Я не нашел dll с таким именем, но я нашел
microsoft.vc80.crt.manifest
в этой папке:
C:Program FilesMicrosoft SQL Server100Setup BootstrapUpdate CacheKB2528583ServicePackx64
Он указывает на 3 другие библиотеки DLL, которые я также включил:
msvcr80.dll
msvcp80.dll
msvcm80.dll
До сих пор я запускал обновление только один раз, но, надеюсь, это будет сделано сейчас. Если я найду / исправлю еще какие-либо проблемы, я обновлю здесь.
Надеюсь, это кому-то поможет.