Sql server SQL DW-使用拆分进行分区

Sql server SQL DW-使用拆分进行分区,sql-server,azure-sqldw,Sql Server,Azure Sqldw,我有一个按月分区的SQLDW表。我们的DBA在几个月前离开了,因此我们的表从那时起就没有被分区过。我们注意到只是因为在桌子上慢下来 当我们尝试使用split函数添加分区时,我们会得到下面的错误 ALTER PARTITION语句的SPLIT子句失败,因为分区不是空的 我们尝试了以下方法 CREATE TABLE [data].[sessions_range] WITH ( CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = HASH([ses

我有一个按月分区的SQLDW表。我们的DBA在几个月前离开了,因此我们的表从那时起就没有被分区过。我们注意到只是因为在桌子上慢下来

当我们尝试使用split函数添加分区时,我们会得到下面的错误

ALTER PARTITION语句的SPLIT子句失败,因为分区不是空的

我们尝试了以下方法

CREATE TABLE [data].[sessions_range]
WITH
(
    CLUSTERED COLUMNSTORE INDEX,
     DISTRIBUTION = HASH([sesh_id]),
    PARTITION 
    (
        -- SAMPLE RANGE
        [session_start_dt] RANGE RIGHT FOR VALUES
        (
            '2016-12-01'
        )
    )
)
AS
SELECT *
FROM    [data].[sessions]
WHERE   1=2
;

ALTER TABLE [data].[sessions] SWITCH PARTITION <guessed at a partition number> 
TO [data].[sessions_range] PARTITION 2;

ALTER TABLE [data].[sessions] SPLIT RANGE ('2016-12-01');
在最后一排之后,它失败了。交换机分区似乎是ok的,尽管我们必须检查分区号,直到在范围内找到相应的分区


有谁能帮我们解释一下,为什么即使在我们切换之后,分区在分割过程中仍然会说notempty?

没有必要猜测。Azure SQL数据仓库支持以下DMV:

sys.partitions
sys.partition_functions
sys.partition_parameters
sys.partition_range_values
sys.partition_schemes
这将帮助您了解表如何映射到值,以便清空相关分区

查看本文以了解有关Azure SQL数据仓库中分区的提示:

还要回顾一下最近的答案,其中演示了分区切换,并展示了目标表如何与源表具有相同的分区布局,以使其工作:


您的DBA真的没有留下任何计划或交接吗?

禁用Columnstore索引,执行拆分,然后重建Columnstore索引。当表上存在列存储时,只能拆分空分区。抱歉。有关如何处理此问题的详细信息,请参阅。这不起作用。Msg 7725,16级,状态1,第31行Alter partition function语句失败。无法通过更改分区函数“PFunc_ce19acb8949f4e248be4ce51ec680b3b”来重新分区表“table_1b651cb9dc3149d1ba96dfac0533b021_4”,因为其聚集索引“Idx_3b8705810d524f0797838b47ef870b4f”已禁用。用户已取消操作。如果尝试禁用和拆分,则会出现上述错误。另外,您发布的链接不适用于SQL DW。