【问题标题】:SSDT schema compare lock SET QUOTED_IDENTIFIER to OFFSSDT 模式比较锁 SET QUOTED_IDENTIFIER 为 OFF
【发布时间】:2016-02-05 16:45:51
【问题描述】:

我安装了 Visual Studio 2012,并安装了 SSDT 版本 11.1.20627.0。

一直困扰我的一个问题是我在 SSDT 项目中的所有存储过程,当尝试使用模式比较将其推送到服务器时。 SP 的 SET QUOTED_IDENTIFIER 总是切换到 OFF,我找不到改变这种行为的方法。

目标数据库是我的本地数据库,其默认 QUOTED_IDENTIFIER 已更改为 ON(True);

在数据库项目属性页面中,“SET QUOTED_IDENTIFIER”复选框被选中,但整个复选框被禁用。

我尝试更改一些架构比较选项,例如“忽略表选项”,结果相同:它总是给我一些更新脚本,如下所示:

GO
USE [$(DatabaseName)];


GO
PRINT N'Creating [dbo].[myspname]...';


GO
SET ANSI_NULLS ON;

SET QUOTED_IDENTIFIER OFF;


GO

任何提示都适用

【问题讨论】:

    标签: sql-server visual-studio-2012 sql-server-data-tools


    【解决方案1】:

    QUOTED_IDENTIFIER 选项可以在项目级别和过程级别设置。单击存储过程文件 -> 属性并检查是否在此处启用了 QUOTED_IDENTIFIER。

    同时在使用模式比较时验证选项“忽略引用的标识符”是启用还是禁用。

    【讨论】:

    • 感谢您的评论。你能告诉我你的SSDT版本吗?对于我的版本 11.1.20627.0,过程文件属性中没有 QUOTED_IDENTIFIER 属性。而且架构比较选项中也没有忽略引用的标识符复选框。
    • 我有这个版本:SQL Server Data Tools 12.0.50730.0
    【解决方案2】:

    终于弄明白了。它是由旧版本的 SSDT 引起的。安装了标有 SSDT_11.0.50730.0 的 SSDT 现在似乎可以工作了。

    我不得不抱怨 SSDT 奇怪的版本控制规则:看起来

    • 11.xxxxx 适用于 Visual Studio 2012

    • 12.xxxxx 适用于 Visual Studio 2013

    • 14.xxxxx 适用于 Visual Studio 2015

    并且第二个版本号在安装媒体中始终为 0,但如果您安装它并在 Visual Studio 的“关于”窗口中查看它。它将变为 1。

    这确实令人困惑,因为它会让您相信版本 11.1.20627.0 比版本 11.0.50730.0 更新。这不是真的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多