VS 2010数据库项目错误?

时间:2010-08-20 19:47:31

标签: visual-studio-2010

我在Visual Studio 2010中构建SQL Server 2008数据库项目时遇到了一个非常奇怪的问题。我创建了数据库项目,然后从我正在使用的本地数据库中导入了数据库对象和设置。然后我去构建数据库项目并得到以下错误:

SQL03006:视图:[dbo]。[GovCAStaff]有一个未解析的对象[CTS_Staff]。[dbo]。[Client_Assignments]的引用。

问题似乎是视图GovCAStaff正在引用不同数据库(CTS_Staff)中的表。但是,我在同一个数据库项目中有许多函数和存储过程,这些函数和存储过程在不同的数据库中引用表,但构建过程只为那些生成警告,而不是错误。除了将视图重写为函数之外,是否有人知道摆脱此构建错误的方法?这是数据库项目中的已知视图限制吗?无论如何,我真的很难过。用Google搜索了这个主题,但没有发现任何相关内容。任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:8)

在视图中显示此错误的原因,而不是函数和存储过程,是因为如果数据库/表实际上不存在,SQL Server本身将如何反应。换句话说,在SQL Server中,您可以定义引用不存在或无法访问的表的存储过程和函数。观点不是这样。

解决此问题的方法是向项目添加“数据库引用”(.dbschema文件),以便项目构建过程了解该其他数据库的模式。从哪里获得这个神奇的.dbschema文件?

  1. 为另一个数据库创建另一个数据库项目(可能在同一个解决方案中)。这是最方便的,因为您可以创建一个“项目引用”并且所有内容都保持最新(无论如何,您想要另一个数据库的数据库项目吗?)。
  2. 通过vsdbcmd手动创建.dbschema文件。
  3. 如果数据库是'系统'数据库(例如'master'或'msdb'),则可以使用其中一个预构建的.dbschema文件({Program Files} \ Microsoft Visual Studio 9.0 \ VSTSDB \ Extensions \ SqlServer的{版本} \ DBSchemas)。