gpt4 book ai didi

sql - 确定 SQL Server 表的分区号

转载 作者:行者123 更新时间:2023-12-01 13:18:44 27 4
gpt4 key购买 nike

我试图在运行时确定特定表在 SQL Server 上的分区数。我知道如何查询 sys.partitions 表以手动检查它,但我需要在运行时执行此操作(一个简单的 IF 语句就足够了)。

我的场景是多个表使用相同的策略进行分区,使用循环将数据发送到一个分区,并截断下一个(模运算),但现在这个策略将在我们的系统上配置:

  1. 用户将能够确定他们想要的分区。
  2. 如果该策略不存在,系统将创建该表。
  3. 后台的截断操作将清除“最旧”的分区(即当前分区右侧的分区)。

这个问题是,如果模运算的参数与用于分区初始表的参数不匹配,用户可能会在之后的配置部署上搞砸,并在不同的分区上截断。 我想检测并避免这种情况。

所以像这样的东西是最理想的:

IF {tableName}.partitions == {expectedPartitions} THEN
TRUNCATE {tableName} WITH (PARTITIONS({partitionToRemove}))
END

有什么方法可以用纯 (T)SQL 做到这一点?

最佳答案

你可以数一数:

select count(*)
from sys.partitions
where object_id = object_id(@YourTableNameHere)

这是一个标量子查询,可以在 if 中使用。

关于sql - 确定 SQL Server 表的分区号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com