如何避免使用visual studio 2012数据库项目的循环引用

时间:2013-08-29 21:51:32

标签: sql-server visual-studio-2012 database-project

我正在尝试在Visual Studio 2012中创建数据库解决方案。

我有5个数据库,它们都存在于同一台服务器上,因此我已将每个数据库导入到数据库项目中。

不幸的是,数据库中有很多对象引用其他数据库中的对象,所以我一直试图通过添加数据库引用来解决这些问题,以创建一个数据库变量来引用这些跨数据库实例。

问题是我有引用B的数据库A和引用A的B,它不允许我添加这两个引用。我收到消息框说“添加此项目作为参考将导致循环依赖”。

有关解决此问题的方法的任何想法?我想有一种方法可能是为每个数据库创建一个解决方案,但如果有更好的方法,我宁愿不这样做。

我们正在尝试建立一个自动构建,所以我真的需要编译数据库项目。

1 个答案:

答案 0 :(得分:13)

您需要将数据库模式提取到dacpac文件中(假设您使用的是SSDT SQLProj文件而不是项目的旧DBProj文件)。您可以通过SSMS或SQLPackage命令行执行此操作。一旦被提取,将它们放在所有项目都可以命中的某个地方(最好是仍然受源代码控制,所以其他人都可以引用它)。将这些dacpac文件作为数据库引用添加到项目中,可能没有为DB Name使用变量的选项。

我写了在我的博客上添加数据库参考: http://schottsql.blogspot.com/2012/10/ssdt-external-database-references.html

另外一个注意事项 - 如果您从这些项目构建新数据库,则可能需要经过多次通过。关闭选项以作为事务运行,并在出现错误时失败,以便创建一些对象,根据需要重复,直到创建所有对象。我在我的项目中使用了一个名为“DeployType”的变量,并设置我的前后部署脚本以不同方式处理DeployType为“New”,因此它不会尝试填充/更新“New”构建的任何数据。