我正在尝试使用以下查询将表分区切换为临时表:
create partition function [PFCT_T](datetime2) as range right for values ()
create partition scheme [PSCH_T] as partition [PFCT_T] all to ([primary])
create table T(A1 datetime2 not null, A2 int not null) on [PSCH_T](A1)
create clustered columnstore index [CIX_T] on dbo.T
insert into T(A1, A2) values ('2024-01-01 00:00:00', 1)
select top 0 * into #T from T
create clustered columnstore index [CIX_#T] on #T
alter table T switch partition 1 to #T
--Results in:
--Msg 608, Level 16, State 1, Line 15
--No catalog entry found for partition ID 5620492390548766720 in database 23. The metadata is inconsistent. Run DBCC CHECKDB to check for a metadata corruption.
是否无法将分区切换到临时表(它适用于普通表)或者我错过了什么?
您似乎正在用户数据库中执行脚本。临时表是在 tempdb 系统数据库中创建的,不能用于
SWITCH
在不同数据库的表之间移动数据。USE tempdb;
如果您只需添加到脚本的开头,该脚本就可以工作,但我怀疑您的意图是在用户数据库中创建永久对象。在这种情况下,您需要使用永久表而不是临时表SWITCH
。