代码之家  ›  专栏  ›  技术社区  ›  Joannes Vermorel Jonathan McIntire

从Windows Azure连接到远程SQL Server 2008

  •  2
  • Joannes Vermorel Jonathan McIntire  · 技术社区  · 15 年前

    我正在尝试从Windows Azure工作角色(它不是SQL Azure,而是远程托管的SQL Server 2008标准版)连接到SQL Server 2008实例,但收到以下错误消息

    System.Data.sqlclient.sqlException:建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:26-定位指定的服务器/实例时出错)位于…

    代码段如下:

    using (var connection = new SqlConnection("MY CONNECTION STRING")
    {
      connection.Open();
      var command = new SqlCommand("Select 1", connection);
    
      try
      {
         var res = command.ExecuteScalar();
      }
      catch (Exception e) {
         Log.Log("error", e.ToString());
      }
    }
    

    当我从本地命令行运行代码片段(直接访问远程SQL Server)时,它工作正常,但是当从Windows Azure运行时,我最后得到了上面的错误消息概要。为了确保连接字符串没有问题,我重新尝试将源代码中的字符串硬编码推送到Azure(仅为100%,但我仍然遇到同样的问题)。

    我在SQL Server 2008实例上没有防火墙设置,我的想法也没有了。

    有人能发现我在这里做错了什么吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Christoph Rüegg    15 年前

    当连接到运行在1433以外端口上的外部非Azure SQL Server实例时,我注意到来自Azure工作角色的SQL Server解析协议(或SQL Server浏览器)存在一些问题。在这些情况下,可以帮助在连接字符串中显式指定实例的TCP端口:

    Data Source={domain/ip},{port};
    Network Library=DBMSSOCN;
    Initial Catalog={dbname};
    User ID={user};
    Password={pw}
    

    也见 Connect from Azure to an SQL Server Named Instance

        2
  •  1
  •   Andomar    15 年前

    你能通过远程桌面控制你的Azure实例吗?

    如果可以,请登录并尝试:

    telnet yoursqlserverhostname 1433
    

    如果此阻塞,则表明网络配置不正确。通常是防火墙问题,在主机或网络之间。