1

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

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

我可以使用 SSMS 连接到 SQL Azure 数据库,当我在连接到 SQL Azure 数据库的 Azure 模拟器中运行我的应用程序时,一切都运行良好,但一旦发布它就拒绝连接。任何帮助将不胜感激!

4

2 回答 2

1

SQL Azure 连接字符串(使用 EF 模型优先/数据库优先)通常如下所示:

<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>

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

于 2012-07-04T17:34:46.897 回答
0

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

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

于 2012-07-04T17:07:26.443 回答