制約を有効にできませんでした。行に入力できるのは、Null 以外の値、一意な値、あるいは外部キーですが、この制約の違反が 1 つ以上の行で発生しています。

主に古い .NET アプリケーションにおいて、突然この意味不明なエラーが出る場合がある。このエラーは、TableAdapter と xsd (データセット)を使用しているアプリケーションで、参照先のデータベース定義を変更した際に出る(古いというのは、よもやこの構成で新規開発をしているところはないと思うため)。
xsd とは、データベース構造の定義ファイルのようなもので、Visual Studio 2003 や 2005 の時代の初心者向けの解説書などによく出てきた(GUI から、ノーコーディングでデータベースアクセスが可能)。

この定義というのが曲者で、アクセス時にはデータベース構造と完全に一致している必要がある。そのため、テーブル変更等を行った場合は、この定義ファイルも再構築しないと突然 落ちてしまう。
最近の Entity Framework だと、クリック一発で更新可能だが、xsd データセットの場合は、削除 → 新規作成 をしないとうまく動かなくなる(たぶん)。
  1. xsd ファイルをデザイナー表示する。
  2. エラーとなっている定義の構成を開く(デザイナーは表示方法を変更するだけでソース管理等で差分になってしまうので注意)。
  3. SQL をコピーしておく。
  4. エラーとなっている定義を削除する。
  5. 定義の再作成。先ほどの SQL を貼り付ける。

xsd データセットは業務ではあまり使われていないかもしれないが、ちょっとしたツールなどだと使っているケースもあるので、テーブルの構造を変えた場合は注意が必要。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する