我正在尝试从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实例上没有防火墙设置,而且我的想法用尽了。
有人能发现我在这里做错了吗?
答案 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}
答案 1 :(得分:1)
您可以通过远程桌面控制Azure实例吗?
如果可以,请登录并尝试:
telnet yoursqlserverhostname 1433
如果阻止,则表示网络配置不正确。通常是主机或网络之间的防火墙问题。