我已经在SqlDependency的帮助下实现了一种机制,它可以提醒我特定数据库表中的任何更改。
但这打破了我现有的功能,我正在更新我已经实现 SqlDependency 的数据库表。
我收到以下错误:
UPDATE 失败,因为以下 SET 选项的设置不正确:'QUOTED_IDENTIFIER'。验证 SET 选项对于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作是否正确。
这类似于“ sqldependency-causes-error-in-other-application ”。
我发现对表执行更新的 proc 是在 QUOTED_IDENTIFIER 设置为 OFF 的情况下创建的,这就是问题的确切原因。
如果我用“ SET QUOTED_IDENTIFIER ON ”更改过程,一切都会完美。但这不是一个可行的解决方案,因为我必须搜索所有 proc 并需要更改它们。
我想知道的是,每次在从应用程序代码执行我的 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)。