;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;
あまり興味深いクエリはありませんが、ORDER BY
句を指定して実行すると、エラーメッセージが表示されます。
メッセージ517、レベル16、状態1、行4
「datetime」列に値を追加すると、オーバーフローが発生しました。
ただし、ORDER BY
句がなければ、問題なく動作します。さらに、同じサーバー上の同じインスタンスに含まれる他のカタログでクエリを実行すると、ORDER BY
句の有無にかかわらず、クエリは正常に実行されます。
影響を受けるカタログと、クエリが期待どおりに実行されるカタログとの間の構成オプションと互換性レベルを確認しましたが、違いを保証するものは何も見つかりませんでした。他の誰かが同様の問題に遭遇しましたか?当面は回避できますが、問題が何であれ、修正できることが理想的です。
潜在的なヒント-カタログに比較的多数のオブジェクトがある場合(> 5000)、エラーを再現できる可能性があります...これは私の最大のカタログで発生しており、TOPをCTE、ORDER BYの問題はなくなりました。
休日の二日酔いかな。
クエリの外部部分のORDER BY
は、リストを正しく順序付けるために、完全なリストの作成を強制する場合があります。 sys.objects
から5k +行が返されると、DATETIME
データ型がオーバーフローして、25 MM日以上の日付を作成しようとしています。