SQL Server:无法在视图上创建索引,因为它引用派生表。
Posted
技术标签:
【中文标题】SQL Server:无法在视图上创建索引,因为它引用派生表。【英文标题】:SQL Server : cannot create index on view because it references derived table. 【发布时间】:2016-08-10 00:32:46 【问题描述】:如何向以下视图添加聚集索引?
CREATE VIEW [vExcludedIds]
WITH SCHEMABINDING
AS
SELECT DISTINCT
TempTable.Id
FROM
(VALUES (1), (2), (3)) AS TempTable(Id)
而我的索引创建命令是:
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON [vExcludedIds] (Id);
我收到以下错误:
无法在视图“Test.dbo.vExcludedIds”上创建索引,因为它引用派生表“TempTable”(由 FROM 子句中的 SELECT 语句定义)。考虑删除对派生表的引用或不对视图编制索引。
另外,当我尝试在 SQL Server Management Studio 中手动添加索引时,“新索引”窗口顶部出现错误提示:
HasClusteredColumnStoreIndex:未知属性。
有什么想法吗?
【问题讨论】:
这个视图的目的是什么?只需创建一个表。 我也有这个问题,但是可以用sql命令 【参考方案1】:请阅读https://msdn.microsoft.com/en-AU/library/ms191432.aspx
创建索引视图有很多限制。
... 视图定义中的 SELECT 语句不得包含以下 Transact-SQL 元素:
不同 派生表考虑创建一个表或表函数
【讨论】:
链接指令出错,例如用户表申请职位。在表中,是应用程序的 user_id 和唯一 [id]。 SET ARITHABORT ON,在唯一索引 [id],[userid] 列上创建视图 SCHEMABOUND 视图返回,立即显示错误情况。即使在 SQL 2014 数据库中。参数有变化吗?在尝试使用索引创建模式绑定视图时,文章默认数据库中没有描述基本因素以始终显示错误?应用程序与 grails 很相似(很像实体框架)不知道为什么。以上是关于SQL Server:无法在视图上创建索引,因为它引用派生表。的主要内容,如果未能解决你的问题,请参考以下文章