9421: XML parsing: illegal xml character(XML 解析: 無効な XML 文字)
SQL Server意味
SQL Server がテキストを XML として解析中に、許可されない (無効な) 文字を検出した。この文字のために XML 型への変換、または XML 列/変数への代入が失敗した。
原因
XML 1.0 で禁止されている制御文字 (例: 0x00-0x1F の範囲の一部の文字)、誤ったエンコーディング (エンコーディングの不一致)、または他のソースからの破損した/サニタイズされていないデータ。通常、CAST(... AS XML) や XML 列への INSERT 中に発生する。
対処方法
XML に変換する前にテキストから無効な文字を除去する。ソースのエンコーディング (UTF-8/UTF-16) をターゲットと互換にし、XML 宣言に正しいエンコーディングを指定する。REPLACE/NCHAR で制御文字を削除するか、アプリケーション層で標準ライブラリを使って XML を生成・検証する。生のテキストを格納する必要がある場合は NVARCHAR(MAX) を検討する。
同じデータベースの他の項目
- 3729Cannot DROP because it is being referenced by object(オブジェクトから参照されているため DROP できない)
- 3961Snapshot isolation transaction failed because the object was modified by a DDL statement(DDL 文でオブジェクトが変更されたためスナップショット分離トランザクションが失敗)
- 1785Introducing FOREIGN KEY constraint may cause cycles or multiple cascade paths(FOREIGN KEY 制約により循環または複数のカスケードパスが生じる可能性)
- 15151Cannot find the object/principal because it does not exist or you do not have permission(オブジェクト/プリンシパルが存在しないか権限がないため見つからない)
- 4834You do not have permission to use the bulk load statement(一括読込み文を使用する権限がない)
- 10928Resource limit for the database has been reached (Azure SQL)(データベースのリソース上限に到達)
- 40544The database has reached its size quota (Azure SQL)(データベースがサイズクォータに到達)