Aktualisieren von DACPACs mit der DACFx 3.0-API - So überprüfen Sie die aktuelle DAC-Version einer vorhandenen Datenbank

Derzeit schreibe ich das Powershell-Skript für die Datenbankbereitstellung meines Teams neu, um die DACFx 3.0-API anstelle von 2.0 zu verwenden. Ich habe es geschafft, dass das DACPAC-Upgrade mit dem neuen erfolgreich funktioniertMicrosoft.SqlServer.Dac.DacServices Controller-Klasse.

Das einzige verbleibende Problem ist: Wie kann ich die aktuelle DACPAC-Versionsnummer aus einer vorhandenen Datenbank abrufen?

Als Teil unseres Bereitstellungsskripts vergleichen wir dies mit der DACPAC-Version, auf die wir aktualisieren, um festzustellen, ob eine Bereitstellung erforderlich ist. Dies wird auch verwendet, um zu entscheiden, ob die datenbankbezogenen Tests ausgeführt werden sollen. Auf diese Weise sparen wir erheblich Zeit bei unseren Builds.

Die alte DacFx2.0-API befindet sich in derMicrosoft.SqlServer.Management.Dac Namespace, also haben wir im alten Powershell-Skript einfach einenDacStore Objekt aus der Datenbankverbindung und entfernen Sie die Version-Eigenschaft:

UNSER ALTER POWERSHELL-SCRIPT

$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)
Write-Host "The following data-tier applications (instances) exist in the DAC store:"
foreach($dacInstance in $dacStore.DacInstances) 
{
    Write-Host Instance Name: $dacInstance.Name
    Write-Host DAC Type Application Name: $dacInstance.Type.Name
    Write-Host DAC Type Version: $dacInstance.Type.Version <--- **** this is what I need ****
}
...

Das Problem ist jetzt in 3.0, die API lebt in derMicrosoft.SqlServer.Dac Namespace und "Anstelle desDacStore undDacExtractionUnit Klassen aus früheren Versionen, fast alles wurde in die brandneue überarbeitetDacServices Controller-Klasse. (src) "

Ich konnte kein Äquivalent von findenDacStore in demDacServices Klasse noch, so ab sofort weiß ich nicht, wie man die aktuelle DAC-Version abruft. Ich habe versucht, in MSDN-Dokumentationen zu suchen, aber in allen Powershell-Abschnitten wurde immer noch auf die alte DACFx2.0-API verwiesen. (Beispiel:Hier).

Wenn mir jemand helfen könnte, wäre ich sehr dankbar. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage