0

App_DataフォルダーにSQL2005Express.mdfデータベースファイルを含むASP.NET3.5アプリがあります。それをFoo.mdfと呼びましょう。ASP.NETアプリは、それ自体で問題なくデータベースに接続できます。ここまでは順調ですね。

次に、サーバーにSql Server Management Studio Expressをインストールして起動すると、ローカルのSQLEXPRESSインスタンスが検出されて接続されますが、データベースのリストにFoo.mdfが表示されません。

そこで、データベースを右クリックして[アタッチ]を選択し、.MDFを見つけて、Foo.mdfをアタッチしてみます。これは漠然としたエラーで失敗します:

CREATE FILE encountered operating system error 32(error not found)  
while attempting to open or create the physical file
'C:\inetpub\wwwroot\FooApp\App_Data\Foo.mdf'. (Microsoft SQL Server, Error: 5123)

IISでASP.NETサイトを停止すると、アタッチ機能しますが、ASP.NETアプリを再起動すると、Foo.mdfに接続できません。

したがって、SQL Express 2005では、アプリまたはManagementStudioのいずれかのみが接続できるように見えます。これは本当にくだらないようです-確かにSQLExpressは複数の接続を許可する必要がありますか?通常のSQLServerのように動作することを期待していました。

うまくいけば、私はそれを間違っています。お知らせ下さい。

4

3 に答える 3

2

アプリケーション接続文字列をチェックして、 User Instance=trueであるかどうかを確認できますか

例:

Data Source=.\SQLEXPRESS;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

MSDNから:ユーザーインスタンスに関する他の主な問題は、SQLServerが排他的アクセスでデータベースファイルを開くために発生します。これが必要なのは、SQLServerがメモリ内のデータベースデータのロックを管理するためです。したがって、複数のSQL Serverインスタンスで同じファイルが開いている場合、データが破損する可能性があります。2つの異なるユーザーインスタンスが同じデータベースファイルを使用する場合、一方のインスタンスは、もう一方のインスタンスがファイルを開く前にファイルを閉じる必要があります。

それが問題である場合は、SQL Server Management Studioでデータベースを接続し、接続文字列を次のように変更して、複数のクライアントが同じデータベースに接続できるようにすることができます。

Server=.\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

これが問題ではない場合は、上記のリンクの「一般的な問題」セクションも確認してください。「一般的な問題」セクションのポイント1/2に従って、権限に関連している可能性があります。

于 2010-10-15T14:46:38.760 に答える
1

デフォルトのASP.NETデータベースを使用した経験はありませんが、MDFをSQL Express DATAフォルダーに移動してみましたか?(デフォルト:C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA)フォルダーに入ると、ManagementStudioを使用してファイルをSQLExpressインスタンスに添付できます。web.configファイルの接続文字列を次のように変更する必要があります。

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>
于 2010-10-15T14:48:09.887 に答える
0

次のユーザーアカウントをWebサイトのフォルダー*App_Data*に追加します:SQLServerMSSQLUser$。高度なセキュリティ権限でそれを探してください。そこで検索を実行してから、完全に制御してください。

于 2010-12-16T02:24:49.297 に答える