部署在Azure上的MVC应用程序无法连接到SQL Azure数据库,但可以通过SSMS进行连接

时间:2012-07-04 15:16:29

标签: asp.net-mvc-3 azure azure-sql-database

我有一个使用Entity Framework的MVC 3应用程序,它很高兴地在Azure中托管,并在2天前与SQL Azure数据库交谈。然后,我对数据库进行了一次小的架构更改,因此通过SSMS删除并重新创建了数据库,并且再次发布了应用程序,因为我已将默认的MVC应用程序登录角色控件添加到站点 - 从那时起,我无法将我的应用程序发送到连接到数据库并在Elmah xml文件中记录以下错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“source =”。Net SqlClient Data Provider“detail =”System.Data.EntityException

我可以使用SSMS连接到SQL Azure数据库,当我在连接到SQL Azure数据库的Azure模拟器中运行我的应用程序时,一切都运行得很好但是一旦发布就拒绝连接。任何帮助都会受到大力赞赏!

2 个答案:

答案 0 :(得分:1)

SQL Azure连接字符串(使用EF Model First / Database First)通常如下所示:

<connectionStrings>    
    <add name="SampleEntities" connectionString="metadata=res://*/Models.SampleEntities.csdl|res://*/Models.SampleEntities.ssdl|res://*/Models.SampleEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:abcdefg.database.windows.net,1433;Database=asdf;User ID=manager@abcdefg;Password=XXXXXX;Trusted_Connection=False;MultipleActiveResultSets=True;Encrypt=True;&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

SQL Azure连接字符串(使用Code First)通常如下所示:

<connectionStrings> 
   <add name="SampleContext" connectionString="Data Source=tcp:abcdefg.database.windows.net,1433;Database=asdf;User ID=manager@abcdefg;Password=XXXXXX;Trusted_Connection=False;MultipleActiveResultSets=True;Encrypt=True" providerName="System.Data.SqlClient" />   
</connectionStrings>

第二个连接字符串也可以在没有实体框架的情况下工作。

答案 1 :(得分:0)

我相信您已经向Azure发布了一个配置,该配置没有正确的SQL Azure服务器名称,而是一些本地/内部部署的SQL服务器。这可能吗?您是否可以远程访问实例并验证正确的.config和SQL Azure服务器?

从错误中可以看出,您的应用程序未使用TCP / IP连接到SQL Azure,而是使用命名管道,这通常意味着SQL Azure服务器名称可能不是有效的TCP / IP主机。