SSDT架构将SET QUOTED_IDENTIFIER锁定为OFF

时间:2015-11-05 00:21:17

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

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

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

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

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

我尝试更改一些Schema比较选项,例如"忽略表格选项"结果是一样的:它总是给我一些更新脚本如下:

GO
USE [$(DatabaseName)];


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


GO
SET ANSI_NULLS ON;

SET QUOTED_IDENTIFIER OFF;


GO

任何提示都是适用的

2 个答案:

答案 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更新。这不是真的。

答案 1 :(得分:1)

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

当使用模式比较时,验证选项"忽略引用的标识符"启用或禁用。