私は現在、2.0 の代わりに DACFx 3.0 API を使用するように、チームのデータベース展開 Powershell スクリプトを書き直しています。Microsoft.SqlServer.Dac.DacServices
新しいコントローラー クラスを使用して、DACPAC のアップグレードを正常に機能させることができました。
残っている唯一の問題は、現在の DACPAC バージョン番号を既存のデータベースから取得するにはどうすればよいかということです。
展開スクリプトの一部として、これをアップグレード先の DACPAC バージョンと比較して、展開が必要かどうかを判断します。これは、データベース関連のテストを実行するかどうかを決定するためにも使用されるため、この方法でビルドにかかる時間を大幅に短縮できます。
古い DacFx2.0 API はMicrosoft.SqlServer.Management.Dac
名前空間に存在するため、古い Powershell スクリプトではDacStore
、データベース接続からオブジェクトを作成し、そこから Version プロパティを取得するだけです。
以前の PowerShell スクリプト
$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 ****
}
...
現在 3.0 の問題、API は名前空間にあり、「以前のバージョンのおよびクラスMicrosoft.SqlServer.Dac
を使用する代わりに、ほとんどすべてがまったく新しいコントローラー クラスにリファクタリングされています。( src )」DacStore
DacExtractionUnit
DacServices
DacStore
クラスで同等のものをDacServices
まだ見つけることができなかったため、現時点では、現在の DAC バージョンを取得する方法がわかりません。MSDN のドキュメントを検索してみましたが、Powershell のすべてのセクションで古い DACFx2.0 API が参照されていました。(例:ここ)。
誰かが私を助けることができれば、それは大歓迎です。ありがとう!