2009-12-23 80 views
2

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

System.Data.SqlClient.SqlException:建立到SQL Server的连接时发生网络相关或实例特定的错误。服务器未找到或无法访问。验证实例名称是否正确,并将SQL Server配置为允许远程连接。在在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection) - (服务提供商::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实例上没有防火墙设置,我用完了想法。

有人可以发现我在这里做错了吗?

回答

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

+0

事实上,在Azure上,UDP不会被网络中继。 – 2009-12-23 16:49:19

1

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

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

telnet yoursqlserverhostname 1433 

如果这个块,你知道,网络配置不正确。通常是主机或网络之间的防火墙问题。

+0

看到没,远程桌面不可用。 – 2009-12-23 14:02:11