我尝试从 Windows Azure 辅助角色连接到 SQL Server 2008 实例(不是 SQL Azure,而是远程托管的 SQL Server 2008 标准版),但收到以下错误消息
System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:SQL 网络接口(interface),错误:26 - 定位指定的服务器/实例时出错)位于 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, bool 型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 实例上没有设置防火墙,而且我已经没有主意了。
有人能发现我在这里做错了什么吗?
最佳答案
我注意到,当连接到在 1433 以外的端口上运行的外部非 Azure SQL Server 实例时,Azure 辅助角色的 SQL Server 解析协议(protocol)(或 SQL Server 浏览器)存在一些问题。在这些情况下,它可以帮助在连接字符串中显式指定实例的 TCP 端口:
Data Source={domain/ip},{port};
Network Library=DBMSSOCN;
Initial Catalog={dbname};
User ID={user};
Password={pw}
关于sql-server - 从 Windows Azure 连接到远程 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952904/