我试图在运行时确定SQL Server上特定表具有的分区数。我知道如何查询 sys.partitions 表以手动检查它,但是我需要在运行时执行此操作(一个简单的IF语句就足够了)。
我遇到的情况是,使用相同的策略对多个表进行分区,使用循环机制将数据发送到分区,然后截断下一个(模运算),但是现在该策略可以在我们的系统上配置:>
问题在于,此后用户可能会搞砸他们的配置部署,如果取模操作的参数与用于分区初始表的参数不匹配,则用户可能会在其他分区上截断。 我想检测这种情况,并避免发生这种情况。
因此,这样的方法将是理想的:
IF {tableName}.partitions == {expectedPartitions} THEN
TRUNCATE {tableName} WITH (PARTITIONS({partitionToRemove}))
END
用纯(T)SQL做到这一点的任何方法吗?
答案 0 :(得分:0)
您可以计算它们:
select count(*)
from sys.partitions
where object_id = object_id(@YourTableNameHere)
这是可以在if
中使用的标量子查询。