对外键引用的表进行分区

问题描述 投票:0回答:1

约有20张桌子按月划分。它们都有一个日期列,作为分区键。到目前为止,还不错,但是许多分区表是由一个或多个外键引用的。这使我无法执行转出+分出分区。因为SQL Server给出错误:

Msg 50000,级别16,状态1,过程HandleError,第26行[Batch Start Line 0]

表不能被外键约束引用。

[可能是在退出前删除约束,然后在退出后重新创建约束,如您在屏幕快照中所见,有很多FK。另一个选择是在删除最旧的分区之前,在每个受影响的表上执行delete语句。但这需要时间,因为我们正在谈论数百万条记录/分区。

在Oracle中,这似乎没有问题。一旦Oracle看到从FK到PK不再有任何引用,就可以删除该分区。在SQL Server中没有。我尝试过只是为了确定。

有人有更好的主意如何以一种优雅的方式解决这个问题吗?

约有20张桌子按月划分。它们都有一个日期列,作为分区键。到目前为止,还不错,但是许多分区表是由一个或多个外键引用的。 ...

sql-server foreign-keys primary-key partitioning
1个回答
0
投票
您只可以修改FK,而不用nockeck constraint命令检查现有数据。然后分区开关将起作用。请参见下面的示例。
© www.soinside.com 2019 - 2024. All rights reserved.