@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQLSERVER2005_ROUND関数のバグ?

1
投稿者投稿内容
ハニワ祭り
大ベテラン
会議室デビュー日: 2005/11/15
投稿数: 115
投稿日時: 2006-03-29 23:10
ハニワ祭りと申します。

SQLSERVER2005のROUND関数についてなのですが、
Management Studioより

SELECT ROUND(0.5,0)

と実行すると、なぜかオーバーフローしてエラーになってしまいます。
現在わかっている状況をまとめると以下のようになります。
(1)0.5以上1未満で発生するようです。
(2)数値型の変数に入れてから渡した場合には発生しない。('1'が返却される。)
(3)CAST(ROUND(0.5,0) AS NUMERIC)としても発生しない。('1'が返却される。)
(4)ROUND(0.5,0,0)としてもやはり発生するが、
   ROUND(0.5,0,1)として切り捨てを指定すると発生しない。
(5)SQLSERVER2000にて実行するとエラーにはならずに'1'が返却される。

これはやはりSQLSERVER2005のバグなんでしょうか?

SQLSERVER2005はMSDN版(エンジンのバージョンは製品版と同じ)です。
よろしくお願いします。



[ メッセージ編集済み 編集者: ハニワ祭り 編集日時 2006-03-29 23:29 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2006-03-30 11:55
たしかに Management Studio で実行するとエラーになりますね。
コード:
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) 
	Oct 14 2005 00:33:37 
	Copyright (c) 1988-2005 Microsoft Corporation
	Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)


(1 行処理されました)


---------------------------------------
バッチの実行中にエラーが発生しました。エラー メッセージ: 演算でオーバーフローしました。



ただ、クエリアナライザ(SQL Server 2000付属のもの)で SQL Server 2005 に接続した場合は問題ありません。

コード:
select @@version
select round(0.5, 0)

Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) 
	Oct 14 2005 00:33:37 
	Copyright (c) 1988-2005 Microsoft Corporation
	Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)


(1 件処理されました)

     
---- 
1.0

(1 件処理されました)


クエリアナライザは ODBC 接続ですが、Management Studio は SQL Native Client だから? ともかくデータベースエンジン自体の問題ではなく接続ミドルウェアの問題のような気がします。ADO.NET かなにかで ODBC/OLE/SQL Native Client でのテストをしてみると詳しく分かるかもしれません。(私は忙しくてそこまでできない)
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-03-30 18:25
こんにちは。
引用:

ハニワ祭りさんの書き込み (2006-03-29 23:10) より:

SQLSERVER2005のROUND関数についてなのですが、
Management Studioより

SELECT ROUND(0.5,0)

と実行すると、なぜかオーバーフローしてエラーになってしまいます。


私の環境でも再現します。

引用:

未記入さんの書き込み (2006-03-30 11:55) より:
ADO.NET かなにかで ODBC/OLE/SQL Native Client でのテストをしてみると詳しく分かるかもしれません。


C# 2.0 で試してみました。
System.Data.SqlClient 名前空間を使用して接続
結果: 1.0

System.Data.OleDb 名前空間を使用して接続
接続文字列のキーワード: Provider=SQLNCLI
結果: 1.0

System.Data.Odbc 名前空間を使用して接続
接続文字列のキーワード: Driver={SQL Native Client}
結果: 1.0

Access 2003 の VBA
ADODB
接続文字列のキーワード: Provider=SQLNCLI
結果: 1


この結果のみで判断すると SQL Server Management Studio 固有の不具合に思えます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 18:38
最近、SQL Server 2005 絡みの不具合が続いてますね。
よろしければ、MSDN フォーラムへフィードバックしてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-03-31 11:59
ueです。
引用:

じゃんぬねっとさんの書き込み (2006-03-30 18:38) より:
最近、SQL Server 2005 絡みの不具合が続いてますね。
よろしければ、MSDN フォーラムへフィードバックしてください。


フィードバックしました。
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=326540&SiteID=7&mode=1
1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)