我正在尝试在 Windows Azure 中设置一个虚拟网络并使用它来避免在我的(自定义)SQL Server 虚拟机上打开一个公共端点。但是,我不断收到与网络相关的错误,指出当尝试通过云服务的 URL 访问我的 Web 应用程序时,SQL Server 不会及时回复。
我在网上到处寻找教程,这些教程展示了如何连接到自己的自定义创建的 VM,而不是 Windows Azure 的预配置虚拟机之一,但发现几乎没有用处。我发现的所有建议我都试过了。
我在 Windows 7 中工作,使用安装了 Windows Azure SDK SP1 的 Visual Studio 2010。
以下是我试图做的一些无济于事的细节。
我有:
- 创建了虚拟网络
- 自己的亲和组
- 单个子网
- 将虚拟机添加到其中
- 确保将其与我为 VNet 创建的关联组放在同一个关联组中
- 安装的 SQL Server
- 按照本教程配置 SQL Server
- 添加了我的数据库,并且我已验证的登录名可以访问该数据库
- 两个都:
- 将现有的 Asp.NET 网站转换为 Web 应用程序并添加了 Azure 部署包,请参阅此处了解我遵循的教程
- 我使用
r-click->Publish to Azure/Publish
了这个,配置为使用我已经部署在 VNet 中的现有云服务和 SQL VM,并确保它与 VM 在同一个子网中。 - 还值得注意的是,此应用程序通过在端口 1433 上打开公共端点并使用公共 IP 地址连接到虚拟网络(仍在 Azure)外部,确实连接到了类似的 VM。
- 我使用
- 在按照本教程配置的全新 Azure 云服务项目中使用转换后的 Web 应用程序代码(我提到的第一个)
- 我尝试通过以下方式发布:
r-click->Publish to Azure/Publish
r-click->Package
并将其上传到 Azure 门户
- 在这两种情况下
- VNet(和子网)中的现有云服务
- 以及在 VNet(和子网)中创建的全新云服务,并在创建期间上传包或在启动后立即发布到服务。
- 我尝试通过以下方式发布:
- 将现有的 Asp.NET 网站转换为 Web 应用程序并添加了 Azure 部署包,请参阅此处了解我遵循的教程
仔细检查我经历过的所有云服务和虚拟机都在 VNet 中,并且在同一个子网中。
My Cloud 服务通常位于内部 IP 10.4.2.5,VM 位于 10.4.2.4。我的连接字符串与我提到的第一个教程相同,只是使用了正确的身份验证并指定了我的 VM 的内部 IP。连接字符串如下:
<add name="SQLServerinWAConnection" connectionString="Data Source=tcp:SQLVMInternalIPAddress;Initial Catalog=MyTableName;User ID=loginName;Password=thepassword;Encrypt=true;Trusted_Connection=false;TrustServerCertificate=true" providerName="System.Data.SqlClient" />
- 我也尝试指定
Trusted_Connection=true
- 我也尝试指定
无论我尝试什么,我都无法让该应用程序连接到该 VM 上的 SQL Server 实例。我什至在端口 1433 向 VM 添加了一个公共端点,并尝试使用其公共 IP 和私有 IP,但无济于事。那是我的后备力量,所以现在我损失惨重。
一些可能有也可能没有任何影响的实现细节:
- SQL Server 实例是命名的,而不是默认的,因此在 SQL Server Management Studio 的对象资源管理器中,它不仅仅是“SQLServerVM”,而是“SQLServerVM\SQLServerDB”。
- 我在 VM 的防火墙上为任何 IP 范围和任何用户打开了端口 1433
我会根据要求添加任何额外的细节(如果你不想阅读整个教程来弄清楚我做了什么)。
根本没有可用的清单来说明 Web 角色或网站能够连接到其虚拟网络中的虚拟机需要做的事情?这将大大简化故障排除。
任何建议将不胜感激。我非常希望能在一天结束时完成这项工作。