SSDT 模式将锁 SET QUOTED_IDENTIFIER 与 OFF 进行比较

SSDT schema compare lock SET QUOTED_IDENTIFIER to OFF

我安装了 Visual studio 2012 和 SSDT 版本 11.1.20627.0。

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

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

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

我尝试更改一些架构比较选项,例如 "Ignore table options",结果是一样的:它总是给我一些更新脚本,如下所示:

GO
USE [$(DatabaseName)];


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


GO
SET ANSI_NULLS ON;

SET QUOTED_IDENTIFIER OFF;


GO

任何提示都适用

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

此外,当使用模式比较时,验证选项 "Ignore quoted identifiers" 是启用还是禁用。

终于想通了。这是由旧版本的 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 的关于 window 中查看它。它将变为 1。

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