41

私はこのエラーにぶつかり続けます。これは通常、でアプリケーションを構築しているときに行った間違いが原因ですLightswitch。それは通常、人間関係に関連付けられています。私は通常、アプリを公開してエラーを確認する前に、さまざまなことを行っています。この時までに、私が間違ったことを計算するのは難しいです。このエラーをさかのぼって、テーブルで何を変更する必要があるかを確認する方法はありますか?

Net SqlClientデータプロバイダー:メッセージ50000、レベル16、状態127、Line6行が検出されました。データ損失が発生する可能性があるため、スキーマの更新は終了しています。

ありがとうございました。

4

4 に答える 4

26

このエラーは、(テーブルデザイナで)エンティティのプロパティに加えた変更により、公開されたデータベース内のエンティティのテーブルが削除および再作成され、テーブルにデータが含まれている場合に発生します。これはSQLServerの動作方法であり、LightSwitchの制御下にはありません。ただし、LightSwitchは注意が必要です。また、データが失われる可能性のある操作は許可されていません。

これを引き起こす可能性のあるものの種類は次のとおりです。

  • プロパティの名前を変更する
  • 必須から不要に変更するなど
  • プロパティのデータ型を変更する
  • &(私が正しく覚えていれば)プロパティのリスト内のプロパティの位置を変更することさえ

ただし、テーブルの削除と再作成をトリガーせずに、プロパティのリストの最後にプロパティを追加することはできます。

あなたが提案するまさにその理由のために、アプリケーションを公開しようとする前にあまりにも多くの変更を加えることは本当に良い考えではありません-あなたが何をしたのかわからなくなってしまいます。特に、エンティティのプロパティに変更を加えた後に公開する必要があります。開発マシン上のローカルSQLServerインスタンス(SQL Expressを含む)に公開する場合でも、運用サーバーに公開する前に変更を「テスト」します。

これを回避する方法(以前はLSの組み込みデータであるApplicationDataを使用していましたが、現在は添付のデータソースを使用しています)は、SSMS(SQL)などを使用してデータベース自体の列に手動で変更を加えることです。 Server Management Studio)。次に、(潜在的な)データ損失を許可することを決定できます。変更内容には十分注意してください。また、LightSwitchのプロパティに加えた変更と同じであることを確認してください。もちろん、データベースに変更を加える前に、データベースをバックアップしてください。データベースをLightSwitchと同期させない場合、大きな問題が発生します。

于 2013-02-09T15:55:15.373 に答える
8

問題の手がかりとなる項目の1つは、エラーメッセージにあります。たとえば、上記のエラーメッセージ[メッセージ50000、レベル16、状態127、6行目]の6行目は、ビルドの一部である.publish.sqlファイルの行番号を示しています。このファイルは、プロジェクトの/ bin/Debugサブディレクトリにあります。これはテキストファイルであるため、任意のテキストエディタまたはVS2012でファイルを開いてファイルを表示し、エラーのある行番号を見つけることができます。

私の特定の問題では、不要になった列を削除していました。生成された.publish.sqlファイルで、変更しているテーブルの行をチェックするIFEXISTS行を見つけることができました。この変更によって気になるデータが破壊されないことがわかったので、VS2012のIF EXISTS行をコメントアウトしてから、スクリプトを再度実行しました。変更は計画どおりに行われました。

注意:この提案は、データを保護するために配置されている安全ガードを無効にします。この変更は、快適に行える場合にのみ行ってください。 *

于 2013-07-30T15:01:11.110 に答える
4

プロジェクトの公開が「データ損失が発生する可能性があるため、スキーマの更新が終了しています」などのエラーで失敗した場合

プロジェクトを右クリック->公開[詳細設定]をクリックし、[一般]タブ->[データ損失が発生する可能性がある場合は増分展開をブロックする]をオンにします。[ドロップ]タブ->ソースにないターゲットにオブジェクトをドロップします。 [OK]をクリックして公開します。

注:上記が機能しない場合は、次のことを試してください。「インクリメンタル展開をブロックする」のチェックを外して公開する

于 2021-01-14T18:32:49.533 に答える
0

VisualStudioで2つのスキーマを比較している場合。[データツールの操作]メニューで[結果の表示]をクリックします。

ここに画像の説明を入力してください

各エラーの上に、エラーの原因についてのコメントがあります。それはあなたにエラーの詳細を提供するでしょう。

ここに画像の説明を入力してください

于 2022-01-14T12:44:37.590 に答える