数据库项目:数据库引用不起作用
Posted
技术标签:
【中文标题】数据库项目:数据库引用不起作用【英文标题】:Database project: database references do not work 【发布时间】:2015-01-19 16:23:06 【问题描述】:在一个数据库项目中,DB2 引用了 DB1。当我制作 DB1 的 dacpac 并在 DB2 中添加对 dacpac 的引用时,项目编译没有错误。
因为无论如何 DB1 和 DB2 在同一个解决方案中,我试图添加一个数据库引用而不是对 dacpac 的引用。由于 DB1 和 DB2 在生产中可能驻留在不同名称的不同服务器上,因此我为数据库和服务器添加了 $(parameters)。项目没有编译:
错误 1069 SQL71561:视图:xyz 对对象有未解析的引用 [$(server)].[$(dbname)].[someschema].[sometable].
参数设置正确。我是否忽略了有关数据库引用的某些内容?
【问题讨论】:
您是否尝试过关闭使用服务器参数的选项?这可能会使故障排除更容易一些。 谢谢,这引导我走向正确的方向并得到简单的答案...... 【参考方案1】:首先只是为了验证项目本身的设置是否正确。 您在 DB1 的解决方案中有一个项目。 您在 DB2 解决方案中有一个项目。
从头开始(通常最容易使用数据库引用 - 添加引用后无法轻松编辑属性)。从 DB2 项目中删除对 DB1 的任何现有数据库引用。
清洗溶液。 构建 DB1(验证是否已在 \bin\debug 等中为 DB1 创建了 DACPAC)并在必要时修复任何错误。
在 DB2 中添加对解决方案项的数据库引用。右键单击引用,选择添加数据库引用。在下拉列表中选择第一项(当前解决方案中的数据库项目)。选择 DB1。
在底部,从下拉列表中选择“不同的数据库,不同的服务器”。 再次输入变量。验证底部的示例用法是否指示 'SELECT * FROM [$(server)].[$(dbname)].[Schema1].[Table1]'(或类似,具体取决于您选择的变量名称)。记下该样本并将其复制到某处的笔记或剪辑中。
这应该可以解决问题。您已经更改了视图 \procs 以引用变量。
我认为这里最简单的规则是,如果您不确定,请删除引用并重新添加。没有简单的方法来编辑变量名等。另外,如果 DB1 构建失败,那么你仍然会得到类似上面的引用错误。
【讨论】:
【参考方案2】:我没有注意到我的解决方案中引用的数据库项目由于编译错误而没有在 Visual Studio 中编译。编译引用的项目后,对这些项目的引用也会起作用。
能够在 Visual Studio 中提取 dacpac 并不表示项目编译的情况;当直接从数据库中提取 dacpac 时,该数据库的外部引用将是有效的,而数据库项目必须首先提供这些引用。
【讨论】:
没错,但我必须先提取 dacpacs,然后才能获取要编译和构建的项目(数据库引用)。一旦他们像这样构建,我通常可以让其余的工作没有太多麻烦,或者至少专注于主要问题。以上是关于数据库项目:数据库引用不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当我在同一解决方案中卸载项目时,Visual Studio 中的引用路径不起作用