是否有可能以编程方式从DacPackage获取引用的数据库?

时间:2015-01-06 15:16:00

标签: sql-server-data-tools dac

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

我现在正在使用Dac API(DacPackage)和Microsoft.SqlServer.Dac.DacServices.Deploy(),因为我已经设置了

,它正确地选择了引用的dacpacs
options.IncludeCompositeObjects = true;

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

我在DacPackage中找不到允许我这样做的属性或方法。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

开箱即用,没有。

我已针对它提出了一个连接项,并希望它将在未来版本中使用。

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

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

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

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

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