4

ASP.Net MVC 4 チュートリアルを試していました。次のコードを追加してアプリケーションをビルドすると、ソリューション エクスプローラーのApp_Dataフォルダーの下に Movies.mdf ファイルが作成されると予想していました。ただし、そのディレクトリには何も作成されていません。理由はありますか?

<connectionStrings>
  <add name="DefaultConnection" 
   connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-2012213181139;Integrated Security=true" 
   providerName="System.Data.SqlClient"/>    
  <add name="MovieDBContext" 
   connectionString="Data Source= (LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" /> 
 </connectionStrings>

使用: .NET Framework 4 VS 2010

4

7 に答える 7

2

問題は解決しました。問題はプロジェクトの場所でした。App_Dataフォルダーにデータベースを作成しなかったと思われる共有ドライブのファイルを操作していました。チュートリアルに示されているように、接続文字列コードは完全に問題なく、変更は必要ありません。

于 2012-10-31T09:28:54.553 に答える
2

私のマシンに SqlExpress ではなく MS SQL 2012 の完全なインスタンスがあると、この問題が発生しました。(VS が例外をキャッチしたときに Visual Studio でアプリケーションを停止するのではなく) アプリケーションを続行させることで、ブラウザーに役立つメッセージが表示されることがわかりました。

ファイル "c:\users\chris\documents\visual studio 2012\Projects\MvcApplication1\MvcApplication1\App_Data\aspnet-MvcApplication1-20140225162244.mdf" のディレクトリ ルックアップが、オペレーティング システム エラー 5 (アクセスが拒否されました) で失敗しました。データベースの作成に失敗しました。リストされたいくつかのファイル名を作成できませんでした。関連するエラーを確認してください。

これは、SQL サービスにアプリケーション ディレクトリへの書き込み権限がないことが問題であることを示しています。

必要なユーザー名が (Windows 8 Pro の場合) Explorer GUI for Security に表示されなかったため、アクセス許可を与えるのは少し面倒でした。Sql Server のデフォルト インスタンスのユーザー名はNT SERVICE\MSSQLSERVER(インスタンスの場合はNT SERVICE\MSSQL$InstanceName) であり、手動で入力して書き込み権限を付与する必要がありました。これは App_data ディレクトリだけで行いました。

その後、うまくいきました。

于 2014-02-25T18:09:59.550 に答える
1

このエラーは、Visual Studio と MSSQL が異なる権限で実行されている場合に発生します。.mdfこのため、アプリケーションには、データベース ファイルを作成するための書き込み権限がありません。

解決

  1. 開けるSQL Server Configuration Manager
  2. 選択するSQL Server Services
  3. Log On Asタブを見る

    値は次のようになりますNT AUTHORITY\NETWORKSERVICE(依存します)


ユーザー名を取得したら、

  1. 次に、ターゲットフォルダーに移動します。(デフォルトの場合、App_Dataプロジェクト ディレクトリ内)
  2. 右クリック -> プロパティ ウィンドウ -> セキュリティ タブ
  3. 編集をクリック -> ユーザーまたはグループ名を確認

    Network Serviceユーザー名またはグループ名のリストに何も表示されません。

ユーザー名を追加し、そのユーザーまたはグループに書き込み権限を与えるだけです。

于 2015-06-11T06:49:14.287 に答える
0

以下のように接続文字列を変更して問題を解決しました

 <add name="MovieDBContext"
    connectionString="Data Source=.;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
    providerName="System.Data.SqlClient" />

Microsoft SQl Server Compact 4.0 を nuget からインストールしましたが、インストールする必要があるかどうかはわかりません。

于 2013-04-01T22:07:11.800 に答える
0

それはAttachDBFilenameの場合かもしれません...私は自分のプロジェクトにこれを持っていて、うまくいきます。

... connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.mdf" providerName="System.Data.SqlClient"

また、モデルが正しいことも確認してください。モデルがこの接続を開始しない場合、データベースは作成されません。

于 2012-10-29T15:01:33.647 に答える
0

このMVCチュートリアルでは、「Initial Catalog=Movies;」を追加するだけです (引用符なし) に追加するconnection stringと、うまくいきます。

<add name="MovieDBContext"    connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
于 2013-12-03T03:38:14.480 に答える