【问题标题】:How can I reference another DB from a VS DB project?如何从 VS DB 项目中引用另一个 DB?
【发布时间】:2015-11-09 18:53:41
【问题描述】:

我们有几个数据库,比如 DB1、DB2、DB3 等。

它们必须具有相同的代码库,因此我们在 Visual Studio 2012 中使用 DB 项目,并根据项目与 UAT/Prod DB1 之间的比较生成用于部署的 SQL 脚本。然后将此脚本应用于 DB1-DBn。

在这个数据库项目的历史上,我第一次不得不创建一个包含硬编码数据库名称的函数,例如:

inner join DB1.schema.table1 as t1 on

由于与该数据库引用有关的许多错误,现在无法构建项目或无法更新比较或生成脚本(禁用更新和生成脚本按钮),因为 VS 似乎认为 DB1 不存在。

我尝试添加一个项目级 SQLCMD 变量$(DB) 并将其设置为DB1 默认值并将其用作

inner join [$(DB1)].schema.table1 as t1 on

解决错误,但似乎没有任何区别。

编辑:

有人建议向自身添加一个循环项目引用,并将我试图手动添加的相同变量分配给它,但不知道如何实现。

【问题讨论】:

    标签: visual-studio-2012 sql-server-2012 schema-compare


    【解决方案1】:

    根据article,应将引用添加到手动提取 .dacpac 文件,如下所示:

    使用以下命令从目标数据库中提取 .dacpac 文件:

    "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\sqlpackage.exe" /SourcePassword:p /SourceUser:u /Action:Extract /ssn:192.168.2.1 /sdn:DB1 /tf:DB1.dacpac
    

    将其作为数据库参考。它自动分配了正确的 SQLCMD 变量名,错误消失了。

    从源代码控制点来看,即使在将数据库引用添加到 .dacpac 文件时会自动创建 SQLCMD 变量,但它不会将该文件添加到项目中。使用的.dacpac 文件仍然必须作为现有项目添加到项目中,这有点蹩脚。在解决方案资源管理器中执行此操作时遇到了一个错误,必须通过团队资源管理器执行此操作,这在哪里有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2021-10-08
      • 2013-06-14
      • 2015-12-29
      • 2012-06-16
      相关资源
      最近更新 更多