0

SQL Server Express 2005 DB で奇妙な問題が発生しています。2003サーバーで実行されています。VS2005 では問題なくデータベースにアクセスできます。しかし、アプリケーションを実行しようとすると、次のようになります。

 Cannot open user default database. Login failed.  Login failed for user 'NT AUTHORITY\NETWORK SERVICE'......... .ldf may be incorrect.

NETWORK SERVICE が Web サイト フォルダーとそのすべてのサブ フォルダーに完全にアクセスできることを確認しました。

App_Data のプロパティを見ると、読み取り専用に灰色のチェックマークが付いていることに気付きました。.MDF ファイルは読み取り専用ではありませんが、この灰色のチェックマークを削除できません。消えるまでクリックして変更を適用しようとしましたが、 ATTRIB を試しました。-r しかし、それを変更するものは何もないようです。

私は非常に混乱しています。

ジョン

4

4 に答える 4

1

実際に SQL Server Express のインスタンスを使用していますか、それとも単に App_Data フォルダー内のデータベース ファイルを使用していますか?

SQL Server のインスタンスを使用していて、SQL Server Management Studio Expressがインストールされている場合は、次のようにして、「ネットワーク サービス」アカウントにデータベースへのアクセス権を付与します (考えてみると、Management Studio をポイントできるはずです)。 App_Data フォルダーの mdf でも同じことを行います):

  1. SQL Management Studio を開き、データベースに接続してオブジェクト エクスプローラーで開きます。
  2. サーバー レベル (MachineName\SQL Express) で [セキュリティ] セクションを展開します。その下の [ログイン] セクションにユーザーがまだいないことを確認します。
  3. そうでない場合は、「ログイン」、「新しいログイン...」を右クリックします。
  4. ログインの種類が「Windows 認証」に設定されていることを確認してから、次のいずれかを実行できます。
    1. [検索...]、[詳細...]、[今すぐ検索] の順にクリックし、[NT サービス] をダブルクリックして、次のダイアログで [OK] をクリックします。
    2. 「ログイン名:」ボックスに「NT Authority\Network Service」と入力するだけです。
  5. 次に、[ユーザー マッピング] ページ (左側のペインから選択) で、このユーザーがアクセスするデータベースの横にチェックを入れます。
  6. データベース ロールがある場合 (たとえば、このデータベースに既定の ASP.NET メンバーシップ/ロール/プロファイル テーブルなどがインストールされている場合)、ユーザーに正しいロール (たとえば、「aspnet_Membership_BasicAccess」) を付与していることを確認してください。

それが役立つことを願っています。

于 2009-01-25T11:49:32.787 に答える
1

この問題が発生しました。App_Data フォルダー内のデータベース ファイルを使用していました。

「データベースエクスプローラーで、IDE(Visual Web Developer Express)内でDBをまだ開いていたようです。データベースを右クリックして「接続を閉じる」を選択すると、修正されました。」

( asp.net フォーラムに感謝)

于 2009-11-23T05:43:15.800 に答える
0

違いは、フォルダーの ACL に関連しているのではなく、セキュリティ コンテキストが DB 内のユーザーにマップされているという事実に関連しています。DBには、おそらくdboへのユーザーアカウントのマッピングがあります。

Network Service アカウントが DB を使用する場合は、db にユーザーを作成して Machine アカウントにマップする必要があります。

于 2009-01-24T22:52:07.507 に答える
0

英語以外のオペレーティング システムを実行していると思います。

どういうわけか、ネットワーク サービスのログイン名は、OS が他の言語に翻訳されるときにローカライズされることがあります。

現在、多くのプログラムは、ログイン名が「NT AUTHORITY\NETWORK SERVICE」にハードコードされていることを想定しています。たとえば、ドイツ語版の Windows では、アカウントの名前は「NT-AUTORITÄT\NETZWERKDIENST」です。したがって、プログラムは英語名を探していますが、見つけることができず、エラーが表示されます。

一部の Microsoft プログラムでさえ、このトラップに遭遇し、インストール時にこのようなエラーを表示します!

于 2009-05-07T12:38:59.020 に答える