2011-11-14 7 views
1

先週まで、私はAzure Compute EmulatorでSQL Server 2008 non-R2とASP.NET MVC Webアプリケーションをうまく使いました。実行中にデータベース接続を確立します。Azure ComputeエミュレータはSQL Server 2008 R2にアップグレードした後にデータベースに接続できません

SQL Server 2008 R2に切り替えた後(前にR2以外のバージョンを削除した場合)、Compute Emulatorで実行中のWebアプリケーションはデータベースに接続できなくなりました。

興味深い:私はAzure Compute Emulator以外でアプリケーションを起動すると動作します。

例外:

System.Data.SqlClient.SqlExceptionは、ユーザーコードによって メッセージ未処理だった=オープンデータベース「X」はログインで要求することはできません。ログインに失敗しました。 ユーザー 'NT AUTHORITY \ NETWORK SERVICE'のログインに失敗しました。

ありがとう!

答えて

4

接続文字列に「Integrated Security = True」(またはSSPI)が含まれていると思います。新しいR2インストールはインストールされていませんが、あなたの古いサーバーは、ユーザー "Netword Service"のターゲットDataBaseへの壮大なアクセスに設定されていました。

さらに、Compute Emulatorでアプリケーションを実行する場合、IISを使用してWebロール、つまりデフォルトのアプリケーションプールID(ネットワークサービス)を実行します。しかし、Cloud Project(Compute Emulator)を使用せずにアプリケーションを実行すると、Visual Studio用のアカウントで実行されるCasini(AKA Web開発サーバー)が使用されます(ユーザーアカウントの昇格バージョンが推測されます)。また、ユーザーアカウントにはデータベースにアクセスできるため、アプリケーションにもアクセスできます。

「統合セキュリティ」接続文字列を削除し、Windows Azureアプリケーションを開発するときにクラウド展開を対象とするSQL Serverユーザーに対して使用することを強く推奨します。 SQL Azure は、のSQL Server認証/承認のみをサポートします。

+0

あなたは完全に正しいです、ありがとう – ceran

0

同じ問題がありましたが、web.configの接続文字列から "Integrated Security = True"を削除した後、mvc-appはこの時点でEntity-Frameworkエラーのために接続できませんでした。

しかし、幸いにもthis回避策がついに私の問題を解決しました!

関連する問題