2

Windows XPで実行しているときに、IISのASP.NETWebアプリケーションで次のエラーが発生します。Webアプリケーション内でWindows認証を使用しています。通常はSQLServer認証(混合モード)を使用しますが、読み取り権限を除いて、このデータベースサーバーにアクセスできません。これらは、Windowsネットワーク認証ユーザーを使用することを意味するTrusted Connections(またはIntegrated Security = SSPI;)のみを許可します。

エラー:

Login failed for user ''. The user is not associated with a trusted SQL Server connection.

.NETコード:

SqlConnection conn = new SqlConnection(
    "server=server_name;" +
    "Integrated Security=SSPI;" +
    "database=db_name;" +
    "connection timeout=30;");
SqlDataReader rdr = null;
List<Ticket> list = new List<Ticket>();

try
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT TOP 10 [HEATSeq],[AssignedBy] FROM [dbo].[Asgnmnt]", conn);
    rdr = cmd.ExecuteReader();
    while (rdr.Read())
    {
        Ticket record = new Ticket();

        record.ticket_id = rdr[0].ToString();
        record.assigned_by = rdr[1].ToString();
    }
}
catch (Exception e)
{
    string x = "";
}
finally
{
    if (rdr != null)
    {
        rdr.Close();
    }
    if (conn != null)
    {
        conn.Close();
    }
}

これは、ジョン・スキートの最初の質問で私が答えたのと同じタイプの問題です。Windows 7では、通常、ローカルマシンまたはネットワークサービスを使用して実行するようにアプリケーションプールを設定します(SQL Server認証を使用しないことを選択した場合)。IIS6でアプリケーションプールのユーザーを変更する場所がわからない場合を除きます。

ASP.NETから「ユーザーインスタンス」データベースにアクセスする際のユーザー権限エラー

この記事を読みましたが、これはWindowsXPではなくWindows7のIISに適用されます。WindowsXPでこれを解決するにはどうすればよいですか。このコードをコンソールアプリケーションで実行すると、正常に接続されることに注意してください。

http://blogs.msdn.com/b/sql_protocols/archive/2008/05/03/understanding-the-error-message-login-failed-for-user-the-user-is-not-associated-with- a-trusted-sql-server-connection.aspx

4

3 に答える 3

1

MSDNで答えが見つかりました。

http://msdn.microsoft.com/en-us/library/ab4e6cky(v=vs.80).aspx

将来URLが変更された場合に備えて、上記のドキュメントから以下のテキストを貼り付けています。Windows 7を扱っている場合、Fickleの答えは正しいです。私が読んでいることから、SQL Serverを実行しているリモートマシン上のコンピューターのマシン(Windows XPでIISを実行している)に特権を与える必要があります。SQL ServerのDBAに、SQLServer認証を介してログインするためのアカウントを作成するように依頼する方が簡単であることがわかりました。

=====================

このエラーは、次のようなさまざまな形をとることがあります。

ユーザー'(null)'のログインに失敗しました

ユーザーdomain\usernameのログインに失敗しました

ユーザーcomputer\ASPNETのログインに失敗しました

考えられる原因は、Webアプリケーションを使用していて、MicrosoftSQLServerを実行しているコンピューターにアクセスしようとしていることです。発生する特定のエラーまたは例外は、WebサーバーがSQLServerも実行しているかどうかによって異なります。この問題は、Webアプリケーションが有効な資格情報をSQLServerに渡していないために発生します。一般に、この問題は次のいずれかを実行することで解決できます。

  • WebサーバーもSQLServerを実行している場合は、ローカルASPNETユーザーにログイン権限(Windows2000およびWindowsXP)を付与するか、サーバーでNT AUTHORITY \ NETWORK SERVICEログイン権限(Windows Server 2003)を付与します。

  • SQL Serverがリモートコンピューターで実行されており、WebサーバーがIIS 6.0を実行している場合は、Webサーバーのマシンアカウントにリモートコンピューターでのログイン権限を付与します。マシンアカウントはDOMAIN\MACHINENAME$として参照されます。

  • SQLServerを実行しているコンピューターでログイン権限を持つWindowsドメインユーザーとして実行するようにASP.NETを設定します。

  • 接続文字列を使用して、SQLServerの標準セキュリティを使用します。これを行うには、明示的なユーザーIDとパスワードを使用して接続文字列を構成する必要があります。

詳細については、「WebアプリケーションからのSQLServerへのアクセス」を参照してください。

于 2012-09-14T20:29:11.837 に答える
0

MVC アプリケーションの実行中に同じ問題に直面していました。ウィンドウ資格情報でログインしていたため、MVC アプリケーションからリモート マシン上のエンティティ データベースに接続中にエラーが発生しました。

以下のバッチスクリプトを使用した後、リモートマシンの資格情報でログインしたため、問題が解決し、アプリケーションがデータベースに正常に接続されました。

runas /user:corp\username /netonly "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

ユーザー名を会社のユーザー名に置き換えてください。コマンドプロンプトが表示され、パスワードを挿入します(パスワードは表示されません)。新しいインスタンスが.netアプリケーション用に開き、企業の資格情報によって接続されます

于 2016-05-17T06:58:12.483 に答える
0

ApplicationPools の下で、サイトで使用されているプールを右クリックします。プロパティを選択し、[ID] タブに移動します。構成可能なラジオ ボタンをクリックし、資格情報を入力します。使用するユーザーがない場合は、私が提供したリンクにアクセスして、ユーザーを作成する手順を確認してください。

カスタム ID

于 2012-09-11T03:41:21.870 に答える