;WITH
cte_Date ( DateCode_FK ) AS (
SELECT DATEADD( DAY,
1 - ROW_NUMBER() OVER (
ORDER BY so1.object_id ),
GETDATE() )
FROM sys.objects so1
CROSS APPLY sys.objects so2 )
SELECT TOP 10 d.DateCode_FK
FROM cte_Date d
ORDER BY d.DateCode_FK DESC;
Rien d'une requête trop intéressante, mais je reçois un message d'erreur si je l'exécute avec le ORDER BY
Clause:
MSG 517, niveau 16, état 1, ligne 4
Ajout d'une valeur à une colonne "DateTime" a provoqué un débordement.
Cependant, sans le ORDER BY
Clause, il fonctionne très bien. De plus, si j'exécute la requête sur d'autres catalogues contenues dans la même instance sur le même serveur, la requête fonctionne bien avec ou sans le ORDER BY
clause.
J'ai examiné les options de configuration et les niveaux de compatibilité entre le catalogue concerné et un catalogue sur lequel la requête fonctionne comme prévu, mais n'a rien trouvé qui pourrait justifier la différence. Quelqu'un d'autre a-t-il rencontré un problème similaire? Je peux travailler autour de cela pour le moment, mais il aurait idéalement besoin de pouvoir résoudre le problème, quoi qu'il soit.
Indice potentiel - si vous avez un nombre relativement grand d'objets dans un catalogue (> 5000), vous-pouvez reproduire l'erreur ... Cela se produit sur mon plus grand catalogue et il semble que si j'inclus un top in Le CTE, l'ordre par numéro disparaît.
Holiday Hangover je suppose.
Le ORDER BY
Dans la partie externe de la requête oblige parfois le bâtiment de la liste complète afin de le commander correctement. Avec 5k + rangées retournées de sys.objects
, le type de données DATETIME
débordne en essayant de créer des dates de plus de 25 mm de jours.