我有一个使用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模拟器中运行我的应用程序时,一切都运行得很好但是一旦发布就拒绝连接。任何帮助都会受到大力赞赏!
答案 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="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.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主机。