1

我有一个 SSDT 数据库项目,它引用了其他几个数据库。

我现在将 Dac API (DacPackage) 与 Microsoft.SqlServer.Dac.DacServices.Deploy() 一起使用,因为我已经设置了正确选择引用的 dacpacs

options.IncludeCompositeObjects = true;

我想做的是能够查询内存中的包以从 dacpac 中获取引用数据库的列表,然后验证我的运行时配置没有丢失任何内容。

我在 DacPackage 中找不到允许我解决此问题的属性或方法。

有没有办法做到这一点?

4

1 回答 1

1

开箱即用,不。

我已经针对它提出了一个连接项,并希望它会出现在未来的版本中。

我有一个关于如何做到这一点的 github 示例:

https://github.com/GoEddie/Dacpac-References

基本上你有一个 .dacpac,它是一个 zip 文件——在其中你有 model.xml,它有一组 CustomData 元素,其中每一个元素都是对另一个 dacpac 的引用。

该示例将这些 CustomData 元素作为您可以查询的类 (HeaderParser::GetCustomData) 返回,您还可以使用 HeaderParser::DeleteCustomData 和 HeaderParser::AddCustomData 添加一个。

如果您不喜欢该示例,则可以查询和更新 xml 本身以帮助阅读 zip 文件,使用“System.IO.Packaging.Package”或查看示例中的 DacHackXml。

于 2015-01-06T15:49:14.443 回答