使用Windows Azure托管的连接问题

时间:2012-07-13 05:53:50

标签: .net sql-server exception-handling azure

当我从ASP.NET MVC应用程序连接到SQL Azure时,出现以下错误..

  

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

但是,我能够成功地从SQL Server Management Studio连接到SQL Azure。我也尝试使用sqlCMD进行连接,并且连接没有任何问题。只有问题出现在运行时才会出现此异常。

1 个答案:

答案 0 :(得分:2)

您的连接字符串一定有问题。您无法通过命名管道连接到Windows Azure SQL数据库(a.k.a. SQL Azure)。唯一支持的协议是TCP。所以你的conn字符串看起来像:

  

服务器= TCP:[服务器] .database.windows.net,1433;数据库= [DB_NAME];用户   ID = [用户名] @ [服务器];密码= [口令]; Trusted_Connection = FALSE;加密= TRUE;连接   超时= 30

您可以从管理门户获取连接字符串。当您转到数据库时,右侧有一个连接字符串链接(新门户网站):

SQL Azure show connection strings (new portal)

旧门户几乎一样:

SQL Azure Connection Strings old portal

最后,您必须在防火墙规则中启用“允许其他Windows Azure服务连接到此服务器”。

****根据以下评论更新****

这个连接字符串条目在哪里?在web.config或web.release.config / web.debug.config中。请注意,web.config转换在开发时不起作用,仅在打包时!在本地调试或部署时是否会发生此错误?

如果在本地,您可以检查您实际使用的是哪个连接字符串?

请注意,默认的“ApplicationServices”连接字符串(位于apphost.config中)可能会在您尝试在默认MVC应用程序中“登录/注册”时发生!该连接字符串假定本地SQL Express实例存在并正在运行。这是Memebership和Role提供程序的默认连接字符串。除非您更改成员资格提供程序设置,否则您将无法登录/注册以及需要身份验证的任何操作。