Sql &引用;无法批量加载。排序顺序不正确……”;重建索引分区时

Sql &引用;无法批量加载。排序顺序不正确……”;重建索引分区时,sql,azure-sql-database,Sql,Azure Sql Database,我们正在Azure中对多个数据库运行Ola Hallengrens数据库维护脚本。 在过去的几周里,我们在执行时遇到了同样的错误。如果我们自己执行命令,它将持续存在 该表已进行版本控制,并在计算列上进行分区。这两个都是在错误首次出现时添加的 命令: 在[dbo]上更改索引[IX_AdvertisementUnits_LastModified]。[AdvertisementUnits]重建分区=46,并使用(SORT_IN_TEMPDB=OFF,ONLINE=ON,RESUMABLE=OFF) 错

我们正在Azure中对多个数据库运行Ola Hallengrens数据库维护脚本。 在过去的几周里,我们在执行时遇到了同样的错误。如果我们自己执行命令,它将持续存在

该表已进行版本控制,并在计算列上进行分区。这两个都是在错误首次出现时添加的

命令:

在[dbo]上更改索引[IX_AdvertisementUnits_LastModified]。[AdvertisementUnits]重建分区=46,并使用(SORT_IN_TEMPDB=OFF,ONLINE=ON,RESUMABLE=OFF)

错误消息:

无法批量加载。批量数据流未正确指定为已排序,或者数据违反了目标表施加的唯一性约束。以下两行的排序顺序不正确:第一行的主键:(2020-06-10 17:37:00.7631521+02:00,2020-03-022020-03-0337414493),第二行的主键:(2020-04-0519:10:25.4284962+02:00,2020-04-062020-04-0538193312)

Azure兼容性级别:140


我找不到任何解决问题的方法,我没有尝试重建整个索引,因为我可能会失去重现问题的能力。

祝贺您最终解决了问题:

“最后,我们只是用'on[primary]'重新创建了索引,因此索引没有分区。这“解决”了这个问题,因为索引本来就不应该分区。”

@史蒂夫·迈耶在评论中提供了更多细节


我帮助您将其作为答案发布,这可能对其他社区成员有益。

在查看Ola Hallengrens解决方案时,它具有广泛的可支持性,包括Azure SQL数据库:。您是使用较大的MaintenanceSolution.sql脚本设置的,还是使用某个特定脚本(例如IndexOptimize.sql)来创建特定的维护任务?
MaintenanceSolution.sql
脚本将不适用于Azure sql数据库。它未列为受支持的服务器类型,通过运行脚本解析,我得到以下信息:Msg 40515,级别15,状态1,过程DatabaseBackup,第16行[Batch Start Line 363]引用数据库和/或服务器名称,在该版本的SQL server中不支持“msdb.dbo.backupset”。此版本的SQL server不支持Msg 40515,级别15,状态1,第8680行对“msdb.dbo.sysjobs”中数据库和/或服务器名称的引用。完成时间:2020-06-19T11:06:51.2290514-07:00谢谢您的反馈,我使用了IndexOptimize、CommandLog等单独的脚本。使用IndexOptimize中的@PartitionLevel=N'N'选项可以避免此错误。到目前为止,我只发现这个索引是唯一一个新添加到分区表中的索引。与其他工作索引的唯一区别是,该索引在结尾处未命中“ON[PRIMARY]”。正确创建空数据库将创建非分区索引。但这是另一次的ef核心问题。我想把这个问题更多地集中在sql方面和这个特定的错误上。因此,这不是为什么要创建索引,而是如何修复此错误的来源。