Until last week, I developed with SQL Server 2008 non-R2 and my ASP.NET MVC web application worked fine in the Azure Compute Emulator. It establishes a database connection while running.
After switching to SQL Server 2008 R2 (deinstalled the non-R2 verson before), my web application can’t connect to the database anymore when running in the Compute Emulator.
Interesting: When I start my application outside of the Azure Compute Emulator, it works!
The exception:
System.Data.SqlClient.SqlException was unhandled by user code
Message=Cannot open database “X” requested by the login. The login failed.
Login failed for user ‘NT AUTHORITY\NETWORK SERVICE’.
Any ideas? Thanks!
I guess your connection string is with “Integrated Security=True” (or SSPI). Your old server was configured to grand access to the target DataBase for user “Netword Service”, while your new R2 installation isn’t.
Moreover, when you run your app under Compute Emulator, it uses IIS to run your web role, thus, the default app pool identity (Network Service). However when you run your application without the Cloud Project (Compute Emulator) it uses the Casini (AKA Web Development Server), which runs under the account used for Visual Studio (guess elevated version of your user account). And because your user account does have access to the dabase, your application also has.
I highly suggest drop off any “integrated security” connection strings, and use against SQL Server users when developing Windows Azure applications, that target cloud deployment. SQL Azure only supports SQL Server Authenticatin/Authorization.