1934: INSERT/UPDATE failed because the following SET options have incorrect settings(次の SET オプションの設定が誤っているため INSERT/UPDATE が失敗)
SQL Server意味
必要な SET オプションが誤って設定されていたため、DML 操作 (INSERT/UPDATE/DELETE) が失敗した。典型的には、インデックス付きビュー、計算列のインデックス、フィルター選択されたインデックス、空間/XML インデックスに必須の SET 設定が満たされていない場合に発生する。
原因
対象のテーブル/ビューに特定の SET オプション (特に QUOTED_IDENTIFIER と ANSI_NULLS が ON、NUMERIC_ROUNDABORT が OFF など) を必要とするオブジェクトがあるが、セッションの現在の SET オプションがその要件を満たしていない。古いクライアントドライバや、誤った SET オプションを明示的に設定するスクリプトがきっかけとなる。
対処方法
接続/セッションで必要なオプションを設定する: SET QUOTED_IDENTIFIER ON; SET ANSI_NULLS ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS ON; SET CONCAT_NULL_YIELDS_NULL ON; SET ARITHABORT ON; SET NUMERIC_ROUNDABORT OFF; アプリケーションのドライバが接続時にこれらのオプションを正しく送信していることを確認する。エラーメッセージに誤ったオプションの名前が示されるので、それらを修正する。
同じデータベースの他の項目
- 5061ALTER DATABASE failed because a lock could not be placed on database(データベースにロックを設定できないため ALTER DATABASE が失敗)
- 3702Cannot drop database because it is currently in use(データベースは使用中のため削除できない)
- 15138The database principal owns a schema in the database, and cannot be dropped(データベースプリンシパルがスキーマを所有しているため削除できない)
- 468Cannot resolve the collation conflict(照合順序の競合を解決できない)
- 4864Bulk load data conversion error (type mismatch or invalid character)(一括読込みのデータ変換エラー (型の不一致または無効な文字))
- 916The server principal is not able to access the database under the current security context(サーバープリンシパルは現在のセキュリティコンテキストでデータベースにアクセスできない)