1. ホーム
  2. sql-server

[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。

2022-02-19 09:19:49

質問

でアプリケーションを構築しているときに、何らかのミスで発生するこのエラーに何度もぶつかります。 Lightswitch . これは通常、リレーションシップに関連しています。 通常、アプリを公開し、エラーを確認する前に、いろいろなことを進めています。 この時点では、何が間違っていたのかを判断することは困難です。 このエラーをさかのぼって、テーブルの何を変更する必要があるのかを確認する方法はありますか?

<ブロッククオート

Net SqlClient データプロバイダー。Msg 50000, レベル 16, ステート 127, ライン 6 行が検出されました。データ損失のため、スキーマ更新を終了します。 が発生する可能性があります。

ありがとうございます。

解決方法は?

このエラーは、(テーブル・デザイナーで)エンティティのプロパティに加えた変更により、公開データベース内のエンティティのテーブルが削除され、再作成され、そのテーブルにデータがある場合に発生します。これは SQL Server の動作方法であり、LightSwitch の制御下にあるものではありません。しかし、LightSwitch は、データが失われる可能性のある操作を許可しません。

そのきっかけとなりそうなのは、以下のようなものです。

  • 改名 プロパティ
  • から変更する 必須 から 不要 その他
  • プロパティの データ型
  • を変更することもできます。 位置 の プロパティのリストで

しかし、テーブルが削除されたり再作成されたりすることなく、プロパティをプロパティリストの最後に追加することができます。

アプリケーションを公開する前に、あまり多くの変更を加えるのは良いアイデアではありません。特に、エンティティのプロパティに変更を加えた後に公開することをお勧めします。たとえ、開発マシンのローカルの SQL Server インスタンス (SQL Express を含む) に公開するだけでも、本番サーバーに公開する前に、変更をテストすることができます。

私がこの問題を解決した方法は、SSMS(SQL Server Management Studio)のようなものを使って、データベース自体のカラムを手動で変更することです(以前はLSの固有データ、ApplicationDataを使っていました - 現在は付属のデータソースを使用しています)。そうすれば、(潜在的な)データ損失を許容するかどうかを決定することができます。ただし、非常に注意が必要です。 を変更するだけであることを確認してください。 同じ LightSwitch でプロパティに行った変更と同じです。もちろん、変更を加える前にデータベースをバックアップしてください。データベースが LightSwitch と同期していない場合、大きな問題が発生します。