2

我使用 .Net 的 Azure 管理库创建 Azure SQL 服务器,我需要添加防火墙规则以允许 Azure 服务访问新服务器(如门户中的交换机)。我目前这样创建服务器

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx")
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();

是否有任何我没有发现通常允许 Azure 服务访问此 SQL 服务器的选项?

谢谢!

4

2 回答 2

2

是否有任何我没有发现通常允许 Azure 服务访问此 SQL 服务器的选项?

因此,API 级别没有允许 Azure 服务访问 SQL Server 的设置。幕后发生的事情是,当您想通过门户设置此设置时,会0.0.0.0为您创建一个带有 IP 地址的防火墙规则。

由于0.0.0.0不是真正的 IP 地址,Azure API 将其视为允许访问 Azure 服务的特殊情况。

这也是您需要做的。

请尝试以下代码:

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("0.0.0.0") // Allow access to Azure Services
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();

您应该会看到您的 Azure 服务将能够访问此 SQL Server。

于 2017-08-27T14:38:44.960 回答
0

当您想在创建新的 Azure SQL Server 时启用允许 Azure 服务访问服务器选项时,它实际上会创建一个具有默认名称的新防火墙规则:“ AllowAllWindowsAzureIp ”,其中startIpAddress : 0.0.0.0endIpAddress : 0.0.0.0

在此处输入图像描述

我认为基于上面的默认防火墙规则属性,它应该将 startIpAddress 和 endIpAddress 定义为0.0.0.0

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("0.0.0.0", "0.0.0.0")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();
于 2017-08-27T15:26:48.693 回答