我已经在 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)。
答案 0 :(得分:0)
如果你还在寻找它,还有另外一种方法,不可否认,这不是最自我记录的。
EXEC sys.sp_configure N'user options', N'256'
GO
RECONFIGURE WITH OVERRIDE
GO
如果右键单击数据库,转到属性,连接,然后从列表中选择带引号的标识符,则SSMS会执行此操作。它使sql server为所有传入连接设置了带引号的标识符选项。