Ken*_*hou 5 sql-server-2008 filtered-index
我使用默认设置创建存储过程,如:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Create PROCEDURE [dbo].[TestSP]
AS
BEGIN
set arithabort off
set arithignore on
--.....
END
Run Code Online (Sandbox Code Playgroud)
没事.然后我在表上创建了一个过滤的唯一索引,用于DB中的非空值,然后我无法在SQL Server Management Studio中运行任何存储过程.我得到的错误是这样的:
DELETE(或INSERT)失败,因为以下SET选项具有不正确的设置:'ANSI_NULLS,QUOTED_IDENTIFIER'.验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用.
我尝试运行存储过程,如:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)
要么
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)
我仍然遇到上述错误.我很困惑.如何解决这个问题?
ANSI_NULLS 和 QUOTED_IDENTIFIER 的设置基于您创建/更改过程时的这些设置,而不是基于运行该过程的实例中的设置。
您希望为 TestSP 运行 ALTER PROC,在运行时至少将 QUOTED_IDENTIFIER 设置为 ON。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[TestSP]
AS
BEGIN
set arithabort off
set arithignore on
--.....
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |