从 SQL Server 2005 迁移数据库时,SQL Server 2014 中的分区切换出错

And*_*rea 7 sql-server partitioning

我正在将一个旧数据库从 SQL Server 2005 迁移到 SQL Server 2014。这个数据库有一个分区表;计划作业定期将旧数据从“在线”表移动到历史表。

当我尝试使用以下代码移动分区时,作业失败:

ALTER TABLE Warehouse.TBW_MY_DATA
SWITCH PARTITION 1 
TO Warehouse.TBW_MY_DATA_STAGING
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

消息 4939,级别 16,状态 1,第 4 行 ALTER TABLE SWITCH 语句失败。索引“MY_DATABASE.Warehouse.TBW_MY_DATA_STAGING.PKW_MY_DATA_STAGING”在文件组“FG_EDRN_2009123100085”中,索引“MY_DATABASE.Warehouse.TBW_MY_DATA.PKW_MY_DATA”的分区1在文件组“EDRN_2009123100085”中

错误的实际截图:

在此处输入图片说明

MY_DATABASE.Warehouse.TBW_MY_DATA_STAGING.PKW_MY_DATA_STAGINGMY_DATABASE.Warehouse.TBW_MY_DATA.PKW_MY_DATA是主键的聚集索引。

我试过的:

  1. 为了隔离问题,我以不同的兼容性级别运行作业。

    该错误仅在使用兼容级别 120 (SQL Server 2014) 时发生。在兼容级别 100 和 110(分别是 SQL Server 2008 和 SQL Server 2012)下,一切正常。因此,从 SQL Server 2012 到 SQL Server 2014 的分区处理可能发生了一些变化。

  2. 我在 TechNet 上阅读了有关“通过使用分区切换有效地传输数据”的文章,但没有提及弃用日期/版本,即使我注意到该文章仅适用于 SQL Server 2005 和 2008。

  3. 我检查了的弃用功能列表的重大更改列表中的SQL Server 2014年,但我发现关于分区交换什么。

Jos*_*mar 3

事实上,我认为这与错误相反。2008 年的文档指出“源表和目标表必须共享相同的文件组”,但看起来他们直到 2014 年才开始关注其规则。这篇文章(为 2014 / 2016 CTE 制作)指出“相应的索引或索引分区,也必须驻留在同一文件组中” TechNet