- 締切済み
nvarchar型で指定して文字列幅を越えた文字列をクエリした場合のエラー
nvarchar型で文字列幅を(255)と指定したテーブルに、指定幅を越えた文字列にてクエリを送った場合に、エラーがはきだされると思ったのですが、 なぜか吐き出されません。 超過していた文字列が黙って切り捨てられた文字列で、insertが完了します。 エラーをだしたいのですが、そもそもエラーをなくすような設定があるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kero_mio
- ベストアンサー率90% (94/104)
確証が得られていないので、自信はないのですが、 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文の実行 的外れだったら、すいません。
お礼
ご回答ありがとうございます。 まだ、確認がとれていないのですが、なんとなくSQLサーバの仕様のような気がしてきました。