使用 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”的引用,如下所示:
注意“数据库变量”名称是 $(SameServerDb)。现在我只是将任何引用从 [SameServerDb] 更改为 [$(SameServerDb)]:
CREATE VIEW [dbo].[View2]
AS SELECT * FROM [$(SameServerDb)].[dbo].[Table2]
关于sql-server - VS2013数据库项目如何在解决方案中引用其他数据库项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819356/