【发布时间】:2017-12-21 07:01:24
【问题描述】:
以下索引脚本在 SQL Server 2012 中失败:
CREATE TABLE #ContextDetailTaskTable
(
ContextDetailID bigint not null,
index #ContextDetailTaskTableIndex clustered (ContextDetailID)
)
错误:
“索引”附近的语法不正确。如果打算将其作为表提示的一部分,则现在需要 WITH 关键字和括号。有关正确的语法,请参阅 SQL Server 联机丛书。
而在 SQL Server 2016 中也是如此。
我已将事务隔离级别设置为快照,因此无法创建索引https://connect.microsoft.com/SQLServer/feedback/details/531747/error-3964-on-create-index-on-temporary-table-under-snapshot-isolation-level
我们添加了一个虚拟列并在其中添加了标识。希望这不会影响性能?
SQL Server 2012 中的解决方法:
CREATE TABLE #ContextIDTable
(
ContextDetailID bigint NOT NULL,
ID1 INT NOT NULL identity(1,1),
CONSTRAINT PK_#ContextIDTable
PRIMARY KEY CLUSTERED (ContextDetailID, ID1)
)
【问题讨论】:
标签: sql-server-2012 sql-server-2016