由于ANSI_Padding,创建索引失败

Web*_*per 6 sql-server indexing

当我尝试在SQL Server 2008 R2中创建索引时,我收到以下错误.

CREATE INDEX失败,因为以下SET选项具有不正确的设置:'ANSI_PADDING'

索引脚本是

CREATE UNIQUE NONCLUSTERED INDEX [IX_TabPermission_Roles] ON [dbo].         
[TabPermission] 
(
    [RoleID] ASC,
    [TabID] ASC,
    [PermissionID] ASC
)
INCLUDE ( [AllowAccess]) 
WHERE ([RoleID] IS NOT NULL)
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 [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

表定义在这里.在表定义中,您可以发现没有包含char,varchar,binary或varbinary的列.

如果我运行索引创建脚本SET ANSI_PADDING On,它的工作原理.我的问题是为什么我需要设置它On,在表定义中,我没有任何具有char,varchar,binary或varbinary的列.您还可以发现此表中的所有这些列都具有Ansi_padding设置Off. 此表中列的ANSI填充

Gre*_*reg 9

过滤的索引需要ANSI PADDING ON.

https://msdn.microsoft.com/en-us/library/ms188783(v=sql.105).aspx

过滤索引的必需SET选项

只要出现以下任何一种情况,就需要"必需值"列中的SET选项:

  • 创建筛选索引.
  • INSERT,UPDATE,DELETE或MERGE操作修改过滤索引中的数据.
  • 查询优化器使用查询执行计划中的筛选索引.

SET选项必需值

ANSI_NULLS ON

ANSI_PADDING ON

ANSI_WARNINGS*ON

ARITHABORT ON

CONCAT_NULL_YIELDS_NULL ON

NUMERIC_ROUNDABORT OFF

QUOTED_IDENTIFIER ON