我安装了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
任何提示都是适用的
答案 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。
当使用模式比较时,验证选项"忽略引用的标识符"启用或禁用。