• 締切済み

nvarchar型で指定して文字列幅を越えた文字列をクエリした場合のエラー

nvarchar型で文字列幅を(255)と指定したテーブルに、指定幅を越えた文字列にてクエリを送った場合に、エラーがはきだされると思ったのですが、 なぜか吐き出されません。 超過していた文字列が黙って切り捨てられた文字列で、insertが完了します。 エラーをだしたいのですが、そもそもエラーをなくすような設定があるのでしょうか?

みんなの回答

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

確証が得られていないので、自信はないのですが、 SQL Serverの接続オプションで、ANSI_WARNINGS、ARITHABORT、 ARITHIGNOREがOffだと、エラーは発行しなかったかと思います。 なので、 http://technet.microsoft.com/ja-jp/library/ms190707.aspx をみながら、サーバ設定を変更するか、 サーバ設定変更が容易にできない環境にある場合は、 INSERT処理を行っているストアドや、ストアドじゃなく普通にINSERT している場合は、下記のようにしてみてください。 (エラー番号とメッセージが出たような記憶があります) ■ストアドの場合のイメージ -- エラーメッセージを表示するよう設定 set ANSI_WARNINGS on set ARITHABORT on SET ARITHIGNORE on go -- INSERT処理用のストアド CREATE PROCEDURE XXXXXX AS BEGIN   問題のINSERT文の実行 END ■普通にINSERTしている場合 set ANSI_WARNINGS on set ARITHABORT on SET ARITHIGNORE on go 問題のINSERT文の実行 的外れだったら、すいません。

MrYoYoYo
質問者

お礼

ご回答ありがとうございます。 まだ、確認がとれていないのですが、なんとなくSQLサーバの仕様のような気がしてきました。

関連するQ&A