Comme indiqué précédemment, c'est parce que vous avez atteint le nombre de lignes de sys.columns
. Voici une autre façon de générer une liste de nombres ou ce que d'autres appellent Numbers Table
ou Tally Table
.
Cela utilise CTE
en cascade s et est considéré comme le moyen le plus rapide de créer une table de pointage :
DECLARE @Range AS INT = 7374
;WITH E1(N) AS( -- 10 ^ 1 = 10 rows
SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows
E8(N) AS(SELECT 1 FROM E4 a CROSS JOIN E4 b), -- 10 ^ 8 = 10,000,000 rows
CteTally(N) AS(
SELECT TOP(@Range) ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
FROM E8
)
SELECT * FROM CteTally
Vous pouvez facilement ajouter un autre CTE si vous avez besoin de plus de 10 000 lignes.
Pour plus d'informations sur Tally Table, lisez cet excellent article par Jeff Moden.
Pour des comparaisons de performances entre les façons de générer des tableaux de pointage, lisez ceci .
Explication tirée de l'article de Jeff :
Le CTE appelé
E1
(comme dans 10E1 pour la notation scientifique) n'est rien de plus que dixSELECT 1
est renvoyé sous la forme d'un ensemble de résultats unique.
E2
fait unCROSS JOIN
deE1
avec lui-même. Cela renvoie un ensemble de résultats unique de 10*10 ou jusqu'à 100 lignes. Je dis "jusqu'à" car si la fonction TOP est de 100 ou moins, les CTE sont suffisamment "intelligents" pour savoir qu'il n'est pas nécessaire d'aller plus loin etE4
etE8
n'entreront même pas en jeu. Si leTOP
a une valeur inférieure à 100, pastoutes les 100 lignes queE2
est capable de faire sera fait. Ça fera toujours juste assez selon leTOP
fonction.Vous pouvez suivre à partir de là.
E4
est uneCROSS JOIN
deE2
et fera jusqu'à 100*100 ou 10 000 lignes etE8
est uneCROSS JOIN
deE4
ce qui fera plus de rangées que la plupart des gens n'en auront jamais besoin. Si vous en avez fait plus, ajoutez simplement unE16
en tant queCROSS JOIN
deE8
et changez leFROM
final clause àFROM E16
.Ce qui est vraiment incroyable avec ce bad-boy, c'est qu'il produit des ZEROREADS . Absolument aucun, nada, néant.