小编Ash*_*han的帖子

过滤索引抛出错误 - 更新失败,因为以下 SET 选项设置不正确:ANSI_WARNINGS

执行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 …
Run Code Online (Sandbox Code Playgroud)

sql-server filtered-index

6
推荐指数
1
解决办法
9367
查看次数

确定逻辑/物理读取的总数

我正在使用循环优化包含一些业务逻辑的 SP。我已经删除了循环并将这些代码段转换为一些简单的插入/更新语句。

现在我必须进行基准测试并在执行时间和逻辑/物理读取方面比较新旧代码。

我的问题是由于旧代码中的循环,我如何确定逻辑/物理读取的总数是多少。因为在 SSMS 中,我可以看到数以千计的 IO stats 语句,例如:

“表‘员工’。扫描计数 1,逻辑读取 3,物理读取 0,预读读取 0,lob 逻辑读取 43,lob 物理读取 0,lob 预读读取 0。”

sql-server-2008 sql-server

3
推荐指数
1
解决办法
1369
查看次数

即使在指定索引提示后,对临时表的选择查询也没有以正确的顺序返回数据

在我的代码中,我使用select * into #tempTable. 临时表包含大量记录,我需要在代码中多次从中检索数据,因此我在其上创建了聚集索引。但不知何故,我没有按照创建的索引以正确的顺序获取数据。

我知道我可以简单地通过放置order by子句来做到这一点,但我的问题是为什么即使我强制优化器使用特定索引,我也没有以正确的顺序获取数据?

下面是我的示例代码:

----------- Sample code ----------------------------

;with CTE1
as (
    select col1
        ,col2
        ,-- - -- - - from table1

    union

    select col1
        ,col2
        ,-- - -- - - from table2
        -- few more tables in union --
    )
    , CTE2
as (
    select *
        ,RowNumber = RowNumber() 
            over (order by case 
                    when @sortOrder = 0
                    then case 
                            when @sortColumn = 'Date'
                            then [tdate]......some more dynamic order by conditions..........
                         end …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

1
推荐指数
1
解决办法
2893
查看次数