SSDT + LinkedServer =异构查询需要为连接

时间:2015-09-18 16:27:48

标签: linked-server sql-server-data-tools

如果有人可以帮助解决这个问题,我将非常感激。我现在已经挣扎了太久了,似乎无法解决。

  • 我有一个带有存储过程的SSDT项目(VS2012,SQL2008) 引用链接服务器。

  • 项目成功构建

  • 尝试使用(localdb)或“常规”SQL进行部署时 使用F5或Schema Compare的服务器部署失败,因为链接服务器未在目标中定义

  • 定义链接服务器后,项目仍然无法部署 任何引用链接服务器的存储过程:

      

    错误200 SQL72014:.Net SqlClient数据提供程序:消息7405,级别16,   状态1,过程usp_MemEligGetFullData,第157行异构   查询需要设置ANSI_NULLS和ANSI_WARNINGS选项   用于连接。这确保了一致的查询语义。启用   这些选项然后重新发出您的查询。

将SET ANSI_NULL ON和SET ANSI_WARNINGS ON添加到这些存储过程没有帮助,也没有选择项目属性的数据库设置中的相应复选框。

对于企业环境中的整个团队来说,这是一个阻塞问题,所以,如果有人对这种情况发生了什么有任何想法,我将非常感激!

2 个答案:

答案 0 :(得分:1)

  1. 在Visual Studio中,
  2. 右键单击存储过程
  3. 点击属性
  4. 将ANSI Null更改为“On”
  5. Visual Studio

答案 1 :(得分:0)

尝试通过SSMS创建存储过程,但是在创建过程语句之前的批处理中执行SET ANSI_NULLS ON和SET ANSI_WARNINGS ON,如下所示:

 [ { _id: 5534306515a734345d550c29,
    receivedData: 
     [ { from: 5535357e95ce31e04a994e2a,
         data: 553549abea87c000454fa623,
         companyid: 53feeaa2e4c1087e53bf4a2a }]

如果成功,则检查SSDT生成的脚本是否还包含create procedure语句之前的set语句。如果没有,请确保已启用“脚本数据库选项”设置。如果它仍然没有,那么在最坏的情况下,您可以创建deployment contributor来修改生成的TSQL。