Verwenden Sie die DAC-Pack-API (Data Tier Application) in Azure
-
27-10-2019 - |
Frage
Ich habe eine kleine Anwendung, die dieselbe API wie die Powerscript-Beispiele zum Aktualisieren einer Datenbank von einem Dacpac (Datenebenenanwendung) verwendet.
Damit es auf einem Windows 2008-Server ohne installierte SQL Server-Tools funktioniert, musste ich viele DLLs referenzieren und auf diesen DLLs "Lokal kopieren" auswählen, um sie in meinen Kompilierungsordner zu verschieben. Dies funktioniert gut.
Ich möchte jetzt dieselbe API von einer Worker-Rolle in Azure aus aufrufen. Aber wenn ich es ausführe (mit den gleichen DLLs), bekomme ich
"System.IO.FileLoadException: Datei oder Assembly konnte nicht geladen werden 'Microsoft.SqlServer.BatchParser.dll' oder eine seiner Abhängigkeiten. Das Die Anwendung konnte aufgrund ihrer Konfiguration nebeneinander nicht gestartet werden ist falsch. Weitere Informationen finden Sie im Anwendungsereignisprotokoll ""
Es funktioniert einwandfrei, wenn ich es auf einem lokalen Emulator bereitstelle.
Ich konnte noch nichts aussagekräftiges aus den Protokollen abrufen (nicht sicher, ob meine Diagnose richtig ist).
Die erwähnte Datei befindet sich im veröffentlichten Paket. Ich habe 2 Versionen der Datei gefunden, aber die andere Version ist 32-Bit und ich bekomme (verständlicherweise) eine BadFormat-Ausnahme, wenn ich es versuche.
Hier sind die DLLs, auf die ich verweise:
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
Irgendwelche Ideen, die mir fehlen?
Lösung
Ich glaube, ich habe das geknackt.Ich habe den Remotezugriff auf die VM aktiviert, was bedeutet, dass ich Zugriff auf die Anwendungsereignisse hatte.Nachdem ich meine Worker-Rolle ausgeführt habe, wurde in der Ereignisanzeige eine Fehlermeldung angezeigt, dass microsoft.vc80.crt nicht gefunden werden konnte.
Ich habe keine DLL mit diesem Namen gefunden, aber ich habe gefunden
microsoft.vc80.crt.manifest
in diesem Ordner:
C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Update Cache\KB2528583\ServicePack\x64
Es zeigt auf 3 andere DLLs, die ich ebenfalls aufgenommen habe:
msvcr80.dll
msvcp80.dll
msvcm80.dll
Ich habe das Upgrade bisher nur einmal ausgeführt, aber hoffentlich ist dies jetzt erledigt.Wenn ich weitere Probleme finde / behebe, werde ich sie hier aktualisieren.
Hoffe, das hilft jemandem.