我在Visual Studio 2010中构建SQL Server 2008数据库项目时遇到了一个非常奇怪的问题。我创建了数据库项目,然后从我正在使用的本地数据库中导入了数据库对象和设置。然后我去构建数据库项目并得到以下错误:
SQL03006:视图:[dbo]。[GovCAStaff]有一个未解析的对象[CTS_Staff]。[dbo]。[Client_Assignments]的引用。
问题似乎是视图GovCAStaff正在引用不同数据库(CTS_Staff)中的表。但是,我在同一个数据库项目中有许多函数和存储过程,这些函数和存储过程在不同的数据库中引用表,但构建过程只为那些生成警告,而不是错误。除了将视图重写为函数之外,是否有人知道摆脱此构建错误的方法?这是数据库项目中的已知视图限制吗?无论如何,我真的很难过。用Google搜索了这个主题,但没有发现任何相关内容。任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:8)
在视图中显示此错误的原因,而不是函数和存储过程,是因为如果数据库/表实际上不存在,SQL Server本身将如何反应。换句话说,在SQL Server中,您可以定义引用不存在或无法访问的表的存储过程和函数。观点不是这样。
解决此问题的方法是向项目添加“数据库引用”(.dbschema文件),以便项目构建过程了解该其他数据库的模式。从哪里获得这个神奇的.dbschema文件?