在Azure上使用DAC(数据层应用程序)包API

时间:2011-10-20 03:56:03

标签: azure data-tier-applications

我有一个小应用程序,它使用与powerscript示例相同的API来从dacpac(数据层应用程序)升级数据库。

为了让它在没有安装任何SQL Server工具的Windows 2008服务器上工作,我不得不引用很多dll并在这些dll上选择“Copy Local”以将它们放入我的编译文件夹中。这很好。

我现在想从Azure上的辅助角色调用相同的API。但是当我运行它(使用相同的dll)时,我得到了

  

“System.IO.FileLoadException:无法加载文件或程序集   'Microsoft.SqlServer.BatchParser.dll'或其依赖项之一。该   应用程序无法启动,因为它的并排配置   是不正确的。请参阅应用程序事件日志“

当我部署到本地模拟器时,它工作正常。

我还没有从日志中获得任何有意义的东西(不确定我的诊断是否正确)。

提到的文件位于已发布的包中。我找到了2个版本的teh文件,但另一个版本是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 个答案:

答案 0 :(得分:0)

我想我已经解决了这个问题。我启用了对VM的远程访问,这意味着我可以访问应用程序事件。运行我的worker角色后,我在事件查看器中收到错误,说它无法找到microsoft.vc80.crt。

我没有找到这个名字的dll,但我找到了

microsoft.vc80.crt.manifest 

在此文件夹中:

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

它指向我还包括的其他3个dll:

msvcr80.dll
msvcp80.dll
msvcm80.dll

到目前为止,我只进行了一次升级,但希望现在就完成了。如果我发现/修复了更多问题,我会在这里更新。

希望这有助于某人。