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

时间:2014-02-17 01:41:04

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

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

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

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

已经开始Deborah Kurata Pluralsight课程,但我不相信她会涵盖这种情况。

建议欢迎。

2 个答案:

答案 0 :(得分:11)

听起来您仍然在存储过程和视图中使用现有的三部分名称(例如[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]

答案 1 :(得分:2)

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

您还可以禁止某些警告: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/9b698de1-9f6d-4e51-8c73-93c57355e768/treat-specific-warning-as-error?forum=ssdt