gpt4 book ai didi

sql-server - 创建一个将与 ANSI_NULLS OFF 一起使用的过滤索引

转载 作者:行者123 更新时间:2023-12-03 10:04:07 32 4
gpt4 key购买 nike

我今天正在处理 10 多年前编写的旧 Delphi 应用程序。部分应用程序包含将在应用程序中构建更新语句然后将它们发送到 SQL Server 以运行的组件。

我需要做的工作是尝试加快一些查询的速度。为此,我添加了两个如下所示的索引:

CREATE NONCLUSTERED INDEX [ix_ClientFilerTo0]
ON [ClientTable] ([Client])
INCLUDE ([ClientCol1],[ClientCol2],[ClientCol3] ... Many more columns)
WHERE Client = 0


CREATE NONCLUSTERED INDEX [IX_Client_Status]
ON [OrderTable] ([Client],[Status])
INCLUDE ([OrderCol1],[OrderCol2],[OrderCol3],[OrderCol4])
WHERE [Status] <= 7
GO

当我这样做时,出现了以下错误:

UPDATE failed because the following SET options have incorrect settings: ANSI_NULL, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NUL

我尝试将这些设置添加到我的索引创建语句中,但没有帮助。

我运行了一个 SQL 配置文件,我的应用程序的连接被列为具有以下设置:

set quoted_identifier off
set arithabort off
set numeric_roundabort off
set ansi_warnings off
set ansi_padding off
set ansi_nulls off
set concat_null_yields_null off
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed

我认为这些设置来自该应用程序使用的非常旧版本的 BDE。更改它们需要大量工作(我们正在努力重写此应用程序)。

有没有什么方法可以创建索引,使其可以与具有这些设置的连接一起使用?

注意事项:

  • 我正在使用 SQL Server 2012。
  • 这个错误发生在我的生产和非生产 SQL Server 上
  • 这个错误发生在很多用户的机器上

这是当前在我的订单表中的索引示例:

USE [UseMyDb]
GO

/****** Object: Index [IX_AnotherIndex] Script Date: 10/3/2013 2:56:49 PM ******/
CREATE UNIQUE NONCLUSTERED INDEX [IX_AnotherIndex] ON [OrderTable]
(
[Sequence] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [SomethingIDontUnderstand]
GO

最佳答案

没有变通办法。参见 CREATE INDEX :

Required SET Options for Filtered Indexes

The SET options in the Required Value column are required whenever any of the following conditions occur:

...

  • INSERT, UPDATE, DELETE, or MERGE operation modifies the data in a filtered index.

因此,当发出 UPDATE 语句时,必须设置正确的选项。创建索引时您的设置已经正确(否则您将不会被允许)

关于sql-server - 创建一个将与 ANSI_NULLS OFF 一起使用的过滤索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168987/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com