从Windows Azure连接到远程SQL Server 2008

时间:2009-12-23 13:45:54

标签: sql-server sql-server-2008 networking azure

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

System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,错误:26 - 在指定服务器/实例时出错)在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)位于...

代码段如下:

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 个答案:

答案 0 :(得分:4)

我注意到在连接到在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

答案 1 :(得分:1)

您可以通过远程桌面控制Azure实例吗?

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

telnet yoursqlserverhostname 1433

如果阻止,则表示网络配置不正确。通常是主机或网络之间的防火墙问题。