Mauvais ordre des partitions de SQL Server

J'ai créé une database

USE [master] GO CREATE DATABASE [testdb] CONTAINMENT = NONE ON PRIMARY ( NAME = N'testdb', FILENAME = N'D:\MSSQL\Data\testdb.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), FILEGROUP [2016] ( NAME = N'2016', FILENAME = N'D:\MSSQL\Data\2016.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), FILEGROUP [2017] ( NAME = N'2017', FILENAME = N'D:\MSSQL\Data\2017.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), FILEGROUP [2018] ( NAME = N'2018', FILENAME = N'D:\MSSQL\Data\2018.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), FILEGROUP [2019] ( NAME = N'2019', FILENAME = N'D:\MSSQL\Data\2019.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), FILEGROUP [2020] ( NAME = N'2020', FILENAME = N'D:\MSSQL\Data\2020.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON ( NAME = N'testdb_log', FILENAME = N'D:\MSSQL\Data\testdb_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [testdb] SET COMPATIBILITY_LEVEL = 130 GO 

J'ai une table

 CREATE TABLE [dbo].[ticket2]( [id] [int] NULL, [datesell] [datetime] NULL, [status] [int] NULL ) ON [PRIMARY] GO 

Ensuite, j'ai ajouté des partitions pour cette table

 USE [testdb] GO BEGIN TRANSACTION CREATE PARTITION FUNCTION [byYear](datetime) AS RANGE LEFT FOR VALUES (N'2015-12-31T23:59:59', N'2017-01-01T00:00:00', N'2018-01-01T00:00:00', N'2019-01-01T00:00:00', N'2020-01-01T00:00:00') CREATE PARTITION SCHEME [years] AS PARTITION [byYear] TO ([PRIMARY], [2016], [2017], [2018], [2019], [2020]) CREATE CLUSTERED INDEX [ClusteredIndex_on_years_636227525068063988] ON [dbo].[ticket2] ( [datesell] )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [years]([datesell]) DROP INDEX [ClusteredIndex_on_years_636227525068063988] ON [dbo].[ticket2] COMMIT TRANSACTION GO 

Quand, j'ajoute des données dans ma table, je vois Données dans les partitions

Ensuite, j'ai ajouté une partition de plus pour l'année suivante

 ALTER DATABASE testdb ADD FILEGROUP [2021] ALTER DATABASE testdb ADD FILE ( NAME = N'2021', FILENAME = N'D:\MSSQL\Data\2021.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) TO FILEGROUP [2021] ALTER PARTITION SCHEME [years] NEXT USED [2021]; ALTER PARTITION FUNCTION byYear() split RANGE (N'2022-01-01T00:00:00' ) BEGIN TRANSACTION CREATE CLUSTERED INDEX [ClusteredIndex_on_years_636227647501414735] ON [dbo].[ticket2] ( [datesell] )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [years]([datesell]) DROP INDEX [ClusteredIndex_on_years_636227647501414735] ON [dbo].[ticket2] COMMIT TRANSACTION 

Et je vois mal l'ordre des partitions. Mauvaise commande de partitions

Partition 2020 est toujours la dernière, mais la dernière partition doit être 2021. Et toutes datatables dont la date de vente est supérieure au 01/01/2022 seront dans la partition 2020, mais je m'attendais à les voir dans la partition 2021.

Pourquoi c'est ainsi?

Vous manquez le N'2021-01-01T00: 00: 00 'pour Partition 2020?

 USE [testdb] GO BEGIN TRANSACTION CREATE PARTITION FUNCTION [byYear](datetime) AS RANGE LEFT FOR VALUES (N'2015-12-31T23:59:59', N'2017-01-01T00:00:00', N'2018-01-01T00:00:00', N'2019-01-01T00:00:00', N'2020-01-01T00:00:00', N'2021-01-01T00:00:00') CREATE PARTITION SCHEME [years] AS PARTITION [byYear] TO ([PRIMARY], [2016], [2017], [2018], [2019], [2020]) CREATE CLUSTERED INDEX [ClusteredIndex_on_years_636227525068063988] ON [dbo].[ticket2] ( [datesell] )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [years]([datesell]) DROP INDEX [ClusteredIndex_on_years_636227525068063988] ON [dbo].[ticket2] COMMIT TRANSACTION GO