- Home
- SQL Server
- [SQL Server]メッセージ8729エラー
[SQL Server]メッセージ8729エラー
- 2016/7/26
- SQL Server
- ORDER BY, メッセージ8729
- コメントを書く
メッセージ 8729、レベル 16、状態 1、行 22
SQL Serverでまれに出るエラーで、こういうものがある。
メッセージ内容
メッセージ 8729、レベル 16、状態 1、行 22
RANGE ウィンドウ フレームの ORDER BY リストの合計サイズは 8000 バイトです。サポートされている最大サイズは 900 バイトです。
発生場所
このようなエラーメッセージが出る場合は、ORDER BY句で指定した、列の桁数を疑ってみるといい。
1 |
Sum( 入荷個数 ) Over( Partition by 製品品番 , 工場コード Order by 年月日) AS 個数累計 |
これは、製品の入荷個数の累計を求めるコードだが、ORDER BY 句に指定した年月日に問題があることをエラーメッセージが指摘している。
原因
そこで、調べたところ。
年月日を表す列「YMD」が設定されている桁数は4000桁であった。
しかも、データ型はnvarcharで、2全角文字が1桁2バイトなので4000桁だとすると8000バイトが必要で、エラーメッセージの数値通りである。
今回仕事で、データベースの設定をミスってしまったのはわかるが、仕様変更の申請はややこしいので、SQL側で対応することにした。
対応策
年月日に格納されるデータは「20160725」のように8桁であるため、CAST関数で8ケタに変換する。
1 |
Sum( 入荷個数 ) Over( Partition by 製品品番 , 工場コード Order by Cast(年月日 as varchar(8)) ) AS 個数累計 |
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。