全局实施QUOTED_IDENTIFIER

时间:2013-02-11 05:55:26

标签: sql-server-2008 enterprise-library sqldependency quoted-identifier

我已经在 SqlDependency 的帮助下实现了一种机制,它可以提醒我特定数据库表中的任何更改。

但这会破坏我现有的功能,我正在更新我已实现SqlDependency的数据库表。

我收到以下错误:

  

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

这类似于“sqldependency-causes-error-in-other-application”。

我发现在表上执行更新的proc已经创建了 QUOTED_IDENTIFIER设置为OFF,这是问题的确切原因。

如果我用“ SET QUOTED_IDENTIFIER ON ”改变过程,一切都很完美。但这不是一个可行的解决方案,因为我必须搜索所有的过程并需要改变它们。

我想知道的是,每次从应用程序代码执行proc之前,都会有一种通用的方法来调用“SET QUOTED_IDENTIFIER ON”。

我的应用程序是一个ASP.Net 4 Web应用程序,我使用Microsoft Enterprise Library 5.0来执行数据库操作。 我正在使用以下组件: Microsoft.Practices.EnterpriseLibrary.Data.Database

欢迎任何SqlDependency的替代解决方案。

[编辑] SQL Server 2008中还有任何直接的方法可以直接将QUOTED_IDENTIFIER设置为true而不更改proc。我在想的是编写一个脚本,将QUOTED_IDENTIFIER设置为依赖于该表的所有对象(使用sp_depends)。

1 个答案:

答案 0 :(得分:0)

如果你还在寻找它,还有另外一种方法,不可否认,这不是最自我记录的。

EXEC sys.sp_configure N'user options', N'256'
GO
RECONFIGURE WITH OVERRIDE
GO

如果右键单击数据库,转到属性,连接,然后从列表中选择带引号的标识符,则SSMS会执行此操作。它使sql server为所有传入连接设置了带引号的标识符选项。

相关问题