Ash*_*han 6 sql-server filtered-index
执行proc1时,出现如下错误:
更新失败,因为以下 SET 选项的设置不正确:“ANSI_WARNINGS”。验证 SET 选项是否正确用于计算列上的索引视图和/或索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。
我知道这是因为我在客户表上有一个过滤索引,这需要 SET ANSI_WARNINGS ON。
甚至我们需要一些 ANSI 选项,在创建过滤索引和存储过程时需要注意这些选项。这些事情我都处理过了。
我已经通过在 proc1 中设置 ansi_warning 解决了这个问题,我认为这是理想的解决方案。
但我的问题是,即使在 proc2 中设置了所有必需的 ANSI 选项之后,为什么我会收到此错误?任何的想法?
下面是我的示例代码:
create Customers
(
id int,
name varchar(100),
[Stats] BIT NOT NULL DEFAULT 1,
)
go
CREATE NONCLUSTERED INDEX [IX_Customers_Stats]
ON [dbo].[Customers]([Stats])
WHERE [Stats] = 0
go
CREATE PROC proc1
as
BEGIN
SET ANSI_WARNINGS OFF;
SET NOCOUNT ON;
....
...
.. some code .....
....
...
EXEC proc2 @customerId
END
go
createPROCEDURE [dbo].[proc2 ]
@customerId INT
AS
BEGIN
SET ANSI_WARNINGS ON;
SET ANSI_NULLS ON;
SET ANSI_PADDING ON;
SET ARITHABORT ON;
SET CONCAT_NULL_YIELDS_NULL ON;
SET NUMERIC_ROUNDABORT ON;
SET QUOTED_IDENTIFIER ON;
UPDATE dbo.Customers set Stats = 0 where id = @CustomerId
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9367 次 |
| 最近记录: |