12

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

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

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

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

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

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

4

1 回答 1

13

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

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

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

于 2013-08-30T21:38:35.810 回答