我正在尝试创建一个过滤的非聚集索引。在 gui 中,我右键单击Indexes
我想要索引的表的文件夹。添加应应用索引的列,然后单击过滤器页面添加此语句:WHERE eMail IS NOT NULL
。单击“确定”,出现此错误:
索引“fix_Email”的创建失败。(Microsoft.SqlServer.Smo)
关键字“WHERE”附近的语法不正确。
关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。(Microsoft SQL Server,错误:156)
这直接来自一本关于 SQL Server 2008 管理的书。我安装了 SQL 2012 express 来看看两者之间会有什么不同。之前的所有示例都有效,创建了聚集索引、非聚集索引和覆盖索引。这是本书或 SQL Server 2012 或 Express 版的问题吗?我尝试按照我的陈述末尾的错误消息的建议放置一个分号WHERE
,但这并没有做任何事情。
我能够在查询窗口中使用此代码创建索引:
CREATE NONCLUSTERED INDEX fix_Prices
ON dbo.Customers (eMail)
WHERE eMail IS NOT NULL;
为什么这行得通但不使用 Management Studio gui?