SQL Server QUOTED_IDENTIFIER范围

时间:2014-10-30 20:51:08

标签: sql sql-server

我的工作最近将我们的SQL Server版本从2005年升级到2012年。

这导致我们的一些存储过程停止工作,它们引用了使用SET QUOTED_IDENTIFIER ON创建的视图。

这是因为这些存储过程本身是使用SET QUOTED_IDENTIFIER OFF创建的(见下文)。

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[vw_User]
AS
SELECT UserId, LoginId, FirstName, LastName FROM "User" -- no real-world need for quoted identifiers here, just for the sake of this example

GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROC [dbo].[getUserById]
    @userId int
AS

SELECT LoginId, FirstName, LastName FROM [vw_User] WHERE UserId = @userId

GO

使用SQL Server 2005这不是问题,但在运行任何这些过程的SQL Server 2012中都会生成错误:

  

SELECT失败,因为以下SET选项不正确   设置:' QUOTED_IDENTIFIER'。验证SET选项是否正确   与计算列和/或的索引视图和/或索引一起使用   过滤的索引和/或查询通知和/或XML数据类型   方法和/或空间索引操作。

是否存在某些可能因此类升级而更改的相关设置,或者SQL Server 2012处理QUOTED_IDENTIFIER设置范围的方式有哪些根本区别?

0 个答案:

没有答案