プロが教える店舗&オフィスのセキュリティ対策術

nvarchar型で文字列幅を(255)と指定したテーブルに、指定幅を越えた文字列にてクエリを送った場合に、エラーがはきだされると思ったのですが、
なぜか吐き出されません。

超過していた文字列が黙って切り捨てられた文字列で、insertが完了します。

エラーをだしたいのですが、そもそもエラーをなくすような設定があるのでしょうか?

A 回答 (1件)

確証が得られていないので、自信はないのですが、



SQL Serverの接続オプションで、ANSI_WARNINGS、ARITHABORT、
ARITHIGNOREがOffだと、エラーは発行しなかったかと思います。

なので、
http://technet.microsoft.com/ja-jp/library/ms190 …
をみながら、サーバ設定を変更するか、
サーバ設定変更が容易にできない環境にある場合は、
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文の実行


的外れだったら、すいません。
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/08/13 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す