我目前正在重写我团队的数据库部署 Powershell 脚本以使用 DACFx 3.0 API 而不是 2.0。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
命名空间中,并且“不再使用以前版本中的DacStore
和DacExtractionUnit
类,大多数内容都已重构为全新的DacServices
控制器类。(src)”
我还没有DacStore
在DacServices
课堂上找到等效的,所以到目前为止我不知道如何检索当前的 DAC 版本。我试过搜索 MSDN 文档,但他们所有的 Powershell 部分仍然引用旧的 DACFx2.0 API。(例如:这里)。
如果有人可以帮助我,将不胜感激。谢谢!