sql-server - VS2013数据库项目如何在解决方案中引用其他数据库项目

标签 sql-server database tsql visual-studio-2013

使用 VS2013 并完成我的第一个数据库项目解决方案。我在同一台服务器上有三个现有数据库。报价单、报价单和 QuotingUi。每个都有一些引用其他数据库之一的存储过程。这是通过 database.schema.table (Quotes.dbo.Mytable) 语法完成的,并且在 SSMS 和所有生产情况下都能很好地工作。 QuotingUi 有许多 View 使用相同的语法从 Quoting 中提取数据。 SP 和 EF 模型对此没有问题。

我创建了一个空的解决方案,然后通过在 SQL 对象资源管理器中右键单击数据库并创建新数据库,将每个数据库作为项目添加到解决方案中。一旦创建了所有三个项目,就会构建解决方案。但是,我确实在报价和报价(仅限 sps)上收到警告,无法将引用解析到其他数据库。在 QuotingUi 中,我不仅有关于 sp 引用的警告,还有关于所有 View 的错误(红色波浪线)。

我尝试将其他项目作为项目(似乎只需要 dll)或数据库或两者添加到每个项目,然后重建,然后关闭并重新打开解决方案等。我已经为其他两个 QuoutingUi 设置了构建依赖项项目和首先构建它们的构建顺序。没有快乐。

已经开始 Deborah Kurata Pluralsight 类(class),但我不认为她涵盖了这种情况。

欢迎提出建议。

最佳答案

听起来您仍在存储过程和 View 中使用现有的三部分名称(例如 [SameServerDb].[dbo].[Table2])。您应该更新它以使用 SQLCMD 变量名称作为引用。使用 SQLCMD 变量以便您可以在部署时更改引用的数据库名称。

这涵盖了 in the help documentation ,但这里有一个例子。在这种情况下,我添加了对“SameServerDb”的引用,如下所示:

Add Database Reference Dialog

注意“数据库变量”名称是 $(SameServerDb)。现在我只是将任何引用从 [SameServerDb] 更改为 [$(SameServerDb)]:

CREATE VIEW [dbo].[View2]
AS SELECT * FROM [$(SameServerDb)].[dbo].[Table2]

关于sql-server - VS2013数据库项目如何在解决方案中引用其他数据库项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819356/

相关文章:

sql-server - 是否可以在不提供整个发布快照的情况下更改 SQL Server 复制筛选器?

c# - 如何在 Entity Framework 6 的 linq 查询中使用 T-SQL Max

sql-server - 使用 "Latest record of group"选择在 View 上创建索引

mysql - SQL 查询未基于 BETWEEN 条件运行

sql - 在 SQL 连接中过滤重复项

sql-server - SQL 服务器错误 |快照隔离相关

sql - 使用输入参数为存储过程创建 SQL Server 代理作业

mysql - 如何将所有值列表添加到 mysql 数据库并继续添加,即使有重复的主键?

sql - 使用数据定义语言删除列和所有依赖对象

sql-server - 如何使它成为示例 SQL Atomic?