4

私はASP.netにかなり慣れていません(約2週間基本的なアプリケーションを作成しています)、そして私のデータベースに大きな問題があります。

ログインシステムを使って、簡単なメールアプリケーションを作成していました。数日前はすべてが正常に機能していました。

しかし、どういうわけか、プログラムでデータベースファイルにアクセスしようとするたびに、次のエラーが発生します。

*「/」アプリケーションのサーバーエラー。データベースファイルが破損している可能性があります。修復ユーティリティを実行して、データベースファイルを確認します。[データベース名=C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf]説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。例外の詳細:System.Data.SqlServerCe.SqlCeException:データベースファイルが破損している可能性があります。修復ユーティリティを実行して、データベースファイルを確認します。[データベース名=C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

このエラーは、すべてのデータベースで常に表示されます。過去に機能したデータベースを使用するか、新しい空のデータベースを作成するか。

この問題はdbの破損とは何の関係もないと感じていますが、別の問題があります。

サーバーエクスプローラーでローカルデータベースを接続すると、テーブルを追加できます。テーブルにデータを入力すると、接続のテストは常に成功します。プログラムを介してデータベースに接続しようとすると:

*例外の詳細:System.Data.SqlServerCe.SqlCeException:ファイル共有違反があります。別のプロセスがファイルを使用している可能性があります。[C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

次に、サーバーエクスプローラーで接続を閉じると、エラーが消え、破損エラーが残ります。

私はこれで完全に立ち往生しています。私を再び動かすアイデアを持っている人はいますか?

前もって感謝します。

PS:Visual Studio2010Professionalを使用しています

4

3 に答える 3

3

.MDFファイルはSQLCompactEditionデータベースファイルではなく、SQLServerデータファイルです。SQL Server(Express、Professional、またはその他のバージョン)を使用してデータベースにアクセスし、SQLServerCEの代わりにSQL Native Client、OleDB、またはその他のデータコネクタを使用してデータベースに接続する必要があります。

于 2012-11-12T14:26:45.447 に答える
2

あなたの例外は何が起こっているかを教えてくれます:There is a file sharing violation. A different process might be using the file.多くのプロセスは、ファイルの使用が終わった後でもファイルを手放しません。データベースへの接続を管理できるようにするには、実際のSQLサーバーインスタンスを使用する必要があります(エクスプレスであっても)。

@Yに賛成しました。Ecarriの答えは、彼が正しい解決策を持っていると思うからですが、ファイル共有の競合が発生する最も可能性の高い理由は、開発環境自体です。IDEデバッガーに付属している組み込みのCassiniサーバー(おそらく)を使用している場合は、デバッグセッション間で開発Webサーバーを存続させます。最初のセッションでは、メモリ内の.mdfのインスタンスが存続して取得されるため、後続のデバッグセッションでは、使用可能であってもアクセスできなくなります。ファイルを解放するには、デバッグを停止する必要があります。次に、開発用Webサーバーインスタンスを表すシステムトレイのアイコンを右クリックして、に指示しますStop

于 2012-11-12T14:32:09.683 に答える
0

私の問題は、web.configファイルが変更されたことです。データベースの物理的な場所が変更され、このエラーがスローされていました。データベースはまだそこにありましたが、正しい場所を指していませんでした。

これが問題ではないことを確認するには、web.configファイルを再確認してください。これが誰かに役立つことを願っています。

于 2014-01-27T17:57:21.817 に答える