Tom*_*rek 7 sql-server snapshot-isolation temporary-tables
当我尝试在使用SNAPSHOT
事务隔离时在 SQL Server 中的临时表上创建索引时,出现此错误:
事务失败,因为在快照隔离事务中不允许使用此 DDL 语句。由于元数据没有版本控制,如果在快照隔离中混合使用元数据更改可能会导致不一致。
为什么在使用快照时不允许在 SQL Server 中的临时表上创建索引?
我不明白这一点,如果允许我创建临时表,为什么不允许我向它们添加索引?
Dav*_*oft 11
在现代版本的 SQL Server (2014+) 中,您可以在创建表时创建索引,例如:
create table #t(id int primary key, a int, index ix_a nonclustered(a))
Run Code Online (Sandbox Code Playgroud)
您也可以在快照事务开始之前创建临时表。
几乎所有的 DDL 在一个SNAPSHOT
事务中都是被禁止的。 ALTER TABLE
并且TRUNCATE TABLE
显然是不允许的。 CREATE TABLE
被列入白名单。 CREATE INDEX
可以被列入白名单,但根本不是。
归档时间: |
|
查看次数: |
1530 次 |
最近记录: |