2011-03-25 8 views
1

別のサーバーのSQL Serverデータベースにアクセスする新しいWebアプリケーションをインストールしました。私はWindows認証を使用してのエラーを取得しています:私はweb.configファイルにidentity impersonate="true"を設定しようとすると、ユーザのXXX別のサーバーのSQL ServerにアクセスするASP.NET

のために失敗しました

ログインを、それだけでエラーがスローされます

匿名ユーザーのログインに失敗しました

また、フォーム認証を使用して使用を検証しています私のウェブサイトからのrsと別のアプリケーションプールの使用。

更新:基本的に、このような接続文字列:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

更新:

私の仮想ディレクトリは、匿名認証とWindows認証が有効になっています。

+2

接続文字列をお知らせください。 –

+2

あなたのサイトがネットワークアカウントで実行するようにIISが設定されているアカウント(Active Directory、ローカルマシンアカウントではない)は、SQL Server DBに対するセキュリティ権限を持ちます。 IISはデフォルトでローカルアカウントを使用して実行されます。つまり、SQL ServerログインボックスでWindows認証を使用する方法はありません。これは、SQL Serverボックスにそのアカウントの可視性がないためです。ウェブサーバー。 –

+0

@marc_s:基本的には次のようになります。「データソース= myServerAddress;初期カタログ= myDataBase;統合セキュリティ= SSPI;」 – acermate433s

答えて

0

SQL Serverの設定で接続文字列や情報を指定していないため、正確な回答を提供することは困難です。あなたの最善の策は、IIS構成を見て、ユーザーが別のSQL Serverにアクセスしようとしているものを解決することです。このアカウントにデータベースへのアクセス権を与える必要があります。これは一般的な問題であり、Webサーバーが実行されているアカウントを変更することができない限り、ほとんどの変更はSQL Serverで発生する必要があります。

+0

で「匿名」のものを無効にしてみてください。基本的には、接続文字列は「データソース= myServerAddress;初期カタログ= myDataBase;統合セキュリティ= SSPI;」です。 – acermate433s

3

通常、ASP.NETは無防備なアカウントとして実行されます。統合認証(SSPI)を使用してリモートSQL Serverにアクセスするには、もう少し「永続的」な存在が必要です。簡単な方法は、NETWORK SERVICEビルトインアカウントを使用するようにアプリケーションプールを移動することです。やや厄介なのは、名前のついたアカウントを使うことです。方程式のSQLサーバー側では、同じアカウント(ユーザー/パスまたはネットワークサービスに一致する)をデータベースに適切なアクセス許可を与える必要があります。

あなたのDBAが助けてくれるはずです。

+0

アプリケーションプールは既にNETWORK SERVICEを使用しています。 – acermate433s

+1

その後、SQL Server上でNETWORK SERVICE権限を与える必要があります。 –

関連する問題