如何将OpenQuery合并到SSDT项目中(没有SQL71501 /'未解析的对象'错误引用)

时间:2018-03-01 11:33:49

标签: sql-server-data-tools openquery

我有一个Visual Studio SSDT项目,其中一个视图通过4部分命名引用链接服务器。我在链接服务器上为数据库设置了一个项目,并创建了从主项目到“链接服务器”项目的引用,一切正常。

我被指示使用OpenQuery而不是4部分命名约定,因为实际上OpenQuery的运行速度比通过4部分命名约定查询快2-3倍。

但是,当我在SSDT中更改视图以使用打开查询时,我收到错误: 严重性代码描述项目文件行抑制状态 错误SQL71501:查看:[schema]。[view]有一个未解析的对象引用[LINKEDSERVER]。

我尝试在项目的脚本中定义[LINKEDSERVER]:

exec master.dbo.sp_addlinkedserver @server = N'LINKEDSERVER', @srvproduct=N'SQLSERVER', @provider=N'SQLNCLI', @datasrc=N'SERVERNAME'

并尝试将其添加到引用的项目中。

  

那么,如何将OpenQuery合并到SSDT项目中而不会产生SQL71501 /'未解析的对象'错误引用?

OpenQuery erroring whereas 4 part works fine

1 个答案:

答案 0 :(得分:1)

我一直在同一个问题上作斗争。我解决了:

  • 导入包含所需链接服务器的master.dacpac。
  • 创建从调用数据库到我正在引用的数据库的DACPAC的数据库引用(确保选中了“禁止引用警告”)。
  • 使用语法OpenQuery([LINKEDSERVER], ‘xxx’);而非OpenQuery([$([LINKEDSERVER])], ‘xxx’);

    我希望这会有所帮助!