2015-11-05 53 views
3

我安装了Visual Studio 2012并安装了SSDT版本11.1.20627.0。SSDT模式比较锁SET QUOTED_IDENTIFIER关闭

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

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

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

我试图改变一些模式比较选项,如“忽略表选项”,结果是一样的:它总是给我一些更新脚本象下面这样:

GO 
USE [$(DatabaseName)]; 


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


GO 
SET ANSI_NULLS ON; 

SET QUOTED_IDENTIFIER OFF; 


GO 

任何暗示都appricated

回答

2

最后搞明白了。它是由旧版SSDT造成的。安装SSDT标签SSDT_11.0.50730.0现在似乎工作。

我不得不抱怨对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

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

此外,当使用模式比较验证是否启用或禁用选项“忽略带引号的标识符”。

+0

感谢您的评论。你能让我知道你的SSDT版本吗?对于我的版本11.1.20627.0,过程文件属性中没有QUOTED_IDENTIFIER属性。架构比较选项中也没有忽略QUOTED IDENTIFIER复选框。 – Zee

+0

我有这个版本:SQL Server Data Tools 12.0.50730.0 – scar80