我刚刚开始涉足SSDT并且已经遇到了问题。
我的解决方案包含2个数据库。两个数据库都使用同义词相互引用。因此,就SSDT而言,我们有循环引用。
我知道这种安排存在设计问题,因此无需对此进行评论,也不建议对DB本身进行结构性更改。这是一个现有的系统,我没有权力从结构上改变它。
我也知道SSDT不允许循环引用。这里有一个解决方法(http://social.msdn.microsoft.com/Forums/en-US/ssdt/thread/5fd12f01-54e6-4e7d-b7e2-14fa9df9a7ef)。 它建议将DB1拆分为2个项目DB1和DB1a,例如DB1a引用DB1和DB2并生成DB2引用DB1。但我不确定如何在不实际创建额外数据库的情况下将其配置为工作。
我认为我唯一的选择是将其保留为2个项目,但将它们设置为忽略未解析的引用。
答案 0 :(得分:4)
正如评论中所提到的,我建议在两个现有数据库项目中的任何一个中强制部署触发器作为部署后脚本。
请注意,通过执行此操作,您将无法在SSDT数据库项目中对触发器本身进行任何引用(除非这些对象也包含在部署后脚本中)。不确定实际上是否存在可能依赖于触发器的对象类型,但我认为值得一提:)。