【问题标题】:Azure Compute Emulator can't connect to database after Upgrading to SQL Server 2008 R2升级到 SQL Server 2008 R2 后 Azure Compute Emulator 无法连接到数据库
【发布时间】:2011-11-14 08:44:32
【问题描述】:

直到上周,我使用 SQL Server 2008 非 R2 进行开发,并且我的 ASP.NET MVC Web 应用程序在 Azure Compute Emulator 中运行良好。它在运行时建立数据库连接。

切换到 SQL Server 2008 R2(之前卸载非 R2 版本)后,我的 Web 应用程序在 Compute Emulator 中运行时无法再连接到数据库。

有趣:当我在 Azure Compute Emulator 之外启动我的应用程序时,它可以工作!

例外:

System.Data.SqlClient.SqlException 未被用户代码处理 Message=无法打开登录请求的数据库“X”。登录失败。 用户“NT AUTHORITY\NETWORK SERVICE”登录失败。

有什么想法吗?谢谢!

【问题讨论】:

    标签: asp.net-mvc sql-server-2008 azure azure-web-roles


    【解决方案1】:

    我猜您的连接字符串带有“Integrated Security=True”(或 SSPI)。您的旧服务器已配置为用户“网络服务”对目标数据库的大访问权限,而您的新 R2 安装则没有。

    此外,当您在 Compute Emulator 下运行您的应用程序时,它使用 IIS 来运行您的 Web 角色,即默认的应用程序池标识(网络服务)。但是,当您在没有 Cloud Project(Compute Emulator)的情况下运行您的应用程序时,它使用 Casini(AKA Web 开发服务器),它在用于 Visual Studio 的帐户下运行(猜测您的用户帐户的升级版本)。由于您的用户帐户确实可以访问数据库,因此您的应用程序也可以访问。

    我强烈建议放弃任何“集成安全”连接字符串,并在开发面向云部署的 Windows Azure 应用程序时针对 SQL Server 用户使用。 SQL Azure仅支持 SQL Server Authenticatin/Authorization。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,但是在从 web.config 中的连接字符串中删除“Integrated Security=True”后,mvc-app 也无法连接,这一次是因为实体框架错误。

      但幸运的是this workaround 终于解决了我的问题!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 2019-07-25
        相关资源
        最近更新 更多