2016-05-18 22 views
0

私たちのデータベースに接続するASP.NETアプリケーションがあります。この接続は、データベースへのアクセス方法(ユーザー名、パスワードなど)に関する情報を含むXML設定ファイルを使用して処理します。しかし、特定のページにアクセスしようとすると、黄色の死の画面とLogin failed for user xxxというメッセージで挨拶されます。'/'アプリケーションのサーバーエラー - ユーザーのログインに失敗しました

ローカルホストとしてローカルに実行すると、このエラーは表示されません。サービスをサーバーに展開すると、このエラーメッセージが表示されます。接続文字列は次のようになります。

<add key="DBConnection" value="Data Source=[ServerNameHere];Initial Catalog=[DBNameHere];MultipleActiveResultSets=True;User Id=[usernamehere];Password=[passwordhere];" /> 

私たちのSQL Serverでは、SQL ServerとWindows認証モードの両方が有効になっています。私はsaアカウントのログインプロパティをチェックし、 "許可"を "許可"に設定し、 "ログイン"を "有効"に変更しました。どちらも同じ問題を示しています。サーバーとデータベースは同じマシン上にあります。

これは、同じ問題を抱えた他の人たちの最も一般的な解決策でした。私たちは問題を解決するために何か他の方法がありますか?

最後の注意点は、私たちがLoging failed for user xxxを得るとき、xxxはマシンの名前であるということですので、我々は死の黄色の画面を取得するときには、Domain\MachineName$のように見えます。

EDIT:スローされる例外は次のとおりです。 System.Data.SqlClient.SqlException: Login failed for user 'Domain\MachineName$'.私のVisual Studioでは "continue on exception"が無効になっていますが、このエラーはアプリケーションをローカルでデバッグするときには見つかりません。

+1

例外はスローされますか?サーバーからデータベースにアクセスできますか?エラーログには何が表示されますか?データベースユーザーのドメインは正しいですか? – user1666620

+0

本当にあります!投稿を更新します – Novastorm

+0

作業ページは、同じ接続文字列を使用して例外をスローするデータベースと同じデータベースにアクセスしますか? – bassfader

答えて

0

これで、WebアプリケーションのサービスをホストしていたIISマネージャーがデータベースにアクセスするための正しいアクセス権を持っていないことが判明しました。それが必要な問題SQLマネージャに入ると、私たちのアプリケーションプールのログイン名とユーザーの両方を追加...

  • オープンSQL Server Management Studioを解決し、[セキュリティ]を展開、サーバーの下にターゲットサーバ
  • に接続するにはフォルダ、右のログインをクリックし、[新しいログイン]を選択...

enter image description here

  • Windows認証を有効にしてください。ログイン名はIIS APPPOOL \ [IISにホストされているサービスの名前]

  • 画面左側の[サーバーロール]リンクをクリックして、publicとsysadminが選択されていることを確認します。

  • 画面の左側にある[ユーザマッピング]リンクをクリックして、WebサービスがアクセスできるようにするDBを選択します。
  • 左側の[ステータス]リンクをクリックし、設定が[DBに接続するための許可]と[ログイン用に有効]に設定されていることを確認します。

今(上記のセキュリティフォルダで混乱しないように!)あなたの選択したDBを展開し、[セキュリティ]フォルダを展開し

  • ...あなたがアクセスしたいDBのユーザーを作成します。右クリックして[新規ユーザー]を選択します...

enter image description here

  • ユーザタイプを確認し、ログインを持つSQLユーザーが存在しますログイン名]ボックスの左側に
  • (プロジェクトがDBにアクセスしているかに応じて変化してもよい)であります...それに付いたボタンは、クリックして

enter image description here

  • これで新しいウィンドウが表示されます。それをクリックし、以前に作成したログインを選択します。 [OK]をすべてのウィンドウ。

  • コピーして所有スキーマを選択し、db_readerとdb_writerを確保左側には、ユーザー名

  • としてログイン名を貼り付けが選択されています

  • 左セレクトメンバーシップに

    とそのdb_readerを確保し、db_writer選択されています

  • ユーザーを作成するには、[OK]をクリックします。サービスをホストしているアプリケーションプールがDBにアクセスできるようになりました

関連する問題