VS 2010数据库项目错误?

Mar*_*lin 5 visual-studio-2010

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

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

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

Dan*_*att 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 {version }\DBSchemas).

  • 感谢您的反馈.这种解释是有道理的.实际上,我最初尝试使用.dbschema引用,但没有正确配置数据库引用设置,所以它不起作用(我仍然不断收到编译器错误).我最终通过定义一个设置为其他数据库名称的文字数据库变量来结束工作,并设置选项以抑制由引用项目中未解析的引用引起的错误.非常感谢您的及时帮助! (3认同)