And*_*osa 3 sql t-sql sql-server
我试图在运行时确定特定表在 SQL Server 上的分区数。我知道如何查询sys.partitions表以手动检查它,但我需要在运行时执行它(一个简单的 IF 语句就足够了)。
我的场景是多个表使用相同的策略进行分区,使用循环将数据发送到一个分区,然后截断下一个(模运算),但现在这个策略将在我们的系统上进行配置:
问题在于,如果模运算的参数与用于分区初始表的参数不匹配,则用户可能会在之后的配置部署上搞砸,并在不同的分区上进行 TRUNCATE。我想检测这种情况,并避免它。
所以这样的事情将是理想的:
IF {tableName}.partitions == {expectedPartitions} THEN
TRUNCATE {tableName} WITH (PARTITIONS({partitionToRemove}))
END
Run Code Online (Sandbox Code Playgroud)
有没有办法用纯(T)SQL 做到这一点?
你可以计算它们:
select count(*)
from sys.partitions
where object_id = object_id(@YourTableNameHere)
Run Code Online (Sandbox Code Playgroud)
这是一个标量子查询,可以在if.
| 归档时间: |
|
| 查看次数: |
3375 次 |
| 最近记录: |