2


0

ユーザーのデフォルトデータベースを開けません

ローカルコンピューターへのフォーム認証を使用して、ASPサイトのサーバーから「ASPNETDB.MDF」ファイルを取得しました。 ASP.NET Webサイト構成ツールを使用して、データベースファイルに新しいユーザーを追加しました。 MDFファイルをサーバーにアップロードし直したところ、ユーザーとしてログインしようとすると次の例外が発生します。

`ユーザーのデフォルトデータベースを開くことができません。 ログインに失敗しました。 ユーザー 'NT AUTHORITY \ NETWORK SERVICE’のログインに失敗しました `

私はグーグルでこの問題に対する他の解決策をすべてSOで読みましたが、うまくいくものは見つかりませんでした。

サーバーにはSQL Server 2008があり、VS 2008 Professionalを使用してローカルマシンで使用しています。

私の接続文字列は次のとおりです(読みやすくするために改行が追加されています):


私はSQL Serverを初めて使用するので、どこかで何かを台無しにしてしまったと確信しています。

任意の助けは大歓迎です。

4 Answer


2


構成に関する脇の誰または何または理由に関するすべての質問…​

接続文字列から問題を推測できます。 これは、SQL Expressに対してローカルで機能しますが、サーバー上の適切なSQLに対しては機能しません。

最初の手がかりは、SqlExpressのみがユーザーインスタンスを有効にすることです。 適切なSQLでは、mdfを添付する必要があります。

VS 2008でその接続文字列がマシンで機能する場合、SQL EXPRESSがインストールされています。 その接続文字列がサーバー上で機能する場合、サーバーにはSQL EXPRESSがインストールされています。

サーバーにSql Expressがインストールされておらず、ユーザーインスタンスを許可するように構成されていない場合は、その接続文字列が発生するログイン失敗例外が発生します。

私はあなたのコピーについても疑問に思います。 通常、コピーの場合でも、アクティブなmdfによるアクセスは拒否されます。

クライアント側とサーバー側の両方のSqlバージョンを確認し、接続文字列を比較するために両方のweb.configファイルの以前のコピーを見つけてみてください。


1


あなたの問題は、データベース_login_とデータベース_user._の違いを追跡していないことだと思います。ログインは、SQL Serverへのアクセスを提供します(一般的に)。 データベースユーザーは、特定のデータベースへのアクセスが許可されたログインです。 行ったようにファイルを前後にコピーすると、ログインアカウント(特にWindowsアカウント)の基になる識別子を無効にできます。

SQLアカウントを使用して(Windowsアカウントではなく)SQLサーバーにログインし、web.configファイルに資格情報を配置することをお勧めします。 これは、Windowsアカウントのログインよりも設定、使用、および変更がはるかに簡単であることがわかりました。 ログインが設定されたら、使用したいサーバー上のデータベースへのユーザーアクセスも持っていることを確認してください。 あなたはまだ転送の問題に遭遇する可能性があります(可能性は低いですが)が、それらを修正するのはかなり簡単です。

重要な注意:他の人は同意しません-Windowsアカウントはより安全であると主張するので、この問題について自分自身を教育したいと思うかもしれません!


0


問題の説明が不完全であるか、エラーと一致していません。 より良い回答を得るには、もう少し情報を提供する必要がありますが、ここでは私の予備的な回答を示します。

このエラーは、アプリケーションがSQLへの統合認証を使用していることを示しています。 したがって、接続文字列を確認すると役立ちます。 どこかに「SSPI」と表示されている可能性があります。 これが意味することは、アプリコンテナーが(NETWORK SERVICE)として実行されているユーザーがデータベースに接続しようとしているが、そうする許可がないために接続できないことです。

そのため、実行したことの一部として接続文字列を変更したか、以前はNETWORK SERVICEがデータベースユーザーでした(良い考えではないと思います)。

web.configには、その他のセキュリティ関連の設定が可能です。 アプリはフォーム認証を使用しているようです。 IISが匿名アクセスを許可するように設定されており、web.configが偽装を行うように設定されている場合、NETWORK SERVICEがSQLに接続しようとする可能性もあります。

アプリケーションはどのように接続することになっていますか? フォーム認証で認証するすべてのユーザーがデータベース操作のために通過する必要があるサービスアカウント(単一のユーザーアカウント)がありますか? その場合、データベース接続文字列を変更してユーザーとパスワードを含める必要があります。

これを修正するには、接続文字列、web.configのフォーム認証関連の設定、およびIISのセキュリティ設定を確認する必要があります。 これは、ユーザーを追加したという事実とは関係ないと思います。

編集:だから、私が疑ったように、統合セキュリティを使用しています。 これは、フォーム認証では機能しません。ユーザーがユーザーIDでアプリに対して認証している間、アプリは統合認証でデータベースに対して認証するためです。 ネットワークサービス。 データベースサービスアカウントimoが必要です。接続文字列を変更しなかった場合、これがどのように機能するかはわかりません。


0


このアプリケーションプール→詳細設定→プロセスモデル→ IDを変更してみてください。

プロセスモデルを変更して、同じエラーを修正しました。