Sql server VS2013数据库项目如何引用解决方案中的其他数据库项目

Sql server VS2013数据库项目如何引用解决方案中的其他数据库项目,sql-server,database,tsql,visual-studio-2013,Sql Server,Database,Tsql,Visual Studio 2013,使用VS2013并执行我的第一个数据库项目解决方案。我在同一台服务器上有三个现有数据库。引用,引用,引用。每个数据库都有几个引用其他数据库之一的存储过程。这是通过database.schema.table(Quotes.dbo.Mytable)语法完成的,在SSMS和所有生产环境中都能很好地工作。QuotingUi有许多视图,它们使用相同的语法从Quoting中提取数据。SPs和EF型号对此没有问题 我创建了一个空的解决方案,然后通过右键单击SQL对象资源管理器中的数据库并创建新数据库,将每个数

使用VS2013并执行我的第一个数据库项目解决方案。我在同一台服务器上有三个现有数据库。引用,引用,引用。每个数据库都有几个引用其他数据库之一的存储过程。这是通过database.schema.table(Quotes.dbo.Mytable)语法完成的,在SSMS和所有生产环境中都能很好地工作。QuotingUi有许多视图,它们使用相同的语法从Quoting中提取数据。SPs和EF型号对此没有问题

我创建了一个空的解决方案,然后通过右键单击SQL对象资源管理器中的数据库并创建新数据库,将每个数据库作为项目添加到解决方案中。一旦所有三个项目都创建好,解决方案就会生成。但是,我确实在引号和引号(仅限sps)上有警告,即无法将引用解析到其他数据库。在QuotingUi中,我不仅对sp引用有警告,而且对所有视图都有错误(红色曲线)

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

已经开始了Deborah Kurata Pluralsight课程,但我不相信她涵盖了这个场景


欢迎建议。

对于解决方案中的所有数据库项目,请添加其所有引用的数据库:在“解决方案资源管理器”窗口中,右键单击“引用”->“添加数据库引用”,然后选择其他项目。对所有引用的项目重复此操作。此外,请确保重建所有项目

您还可以抑制某些警告:

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

这是涵盖的,但这里有一个例子给你。在本例中,我添加了对“SameServerDb”的引用,如下所示:

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


谢谢,但正如我在问题中所说的,事实上,我已经完成了我所期望的一切工作。我还抑制了选项中的警告,在生成中创建了依赖项,调整了生成顺序,重建了每个项目,清理了等等。对其他数据库的视图引用(我尝试将其作为项目和数据库引用)仍然显示为错误,而sp引用显示为警告。我将再次回顾这一切,但我认为我做了你建议的所有事情,但没有运气。我有同样的问题,但重建解决方案中的所有项目为我做到了这一点。我也抑制了警告。另外,您可能需要查看在其他数据库中处理对象的方式,可能是那里的语法,但添加引用时都在属性窗口中。Kevin-非常感谢您花时间做了如此清晰完整的解释。实际上,我曾尝试使用数据库变量,但尽管使用了示例示例,我还是忽略了显而易见的一点,即$()部分周围需要方括号。一旦我调整好,一切都很好。如果您将项目命名为文字db名称以外的名称,那么应该提醒阅读本文的其他人以及像我这样无知的人也注意数据库名称。(我的项目在引用.Data,数据库也在引用)@Kevin,我们能不能不用SQLCMD格式,只使用有参考点的数据库的名称?不使用$(SameServerDb)而只使用SameServerDb?
CREATE VIEW [dbo].[View2]
AS SELECT * FROM [$(SameServerDb)].[dbo].[Table2]