同步不同租户下Azure global cloud与Azure China中的SQL Server时,如何获取Azure SQL Data Sync服务IP或解决防火墙访问问题
同步不同租户下Azure global cloud与Azure China中的SQL Server时,如何获取Azure SQL Data Sync服务IP或解决防火墙访问问题
嘿,我来帮你搞定这个跨云同步的防火墙难题!针对你遇到的问题,这里有几个实用的解决办法:
方法一:从SQL Server防火墙日志里直接抓被拦截的IP
这是最直接的方式,毕竟报错里提到的IP就是Data Sync服务发起请求的地址:
- 登录Azure中国门户,找到你的目标SQL Server
- 进入日志页面,用Kusto查询筛选被拒绝的登录请求,复制这段查询语句运行:
AzureDiagnostics | where ResourceType == "SQLSERVERS" | where Category == "SQLSecurityAuditEvents" | where action_name_s == "FAILED_LOGIN" | where additional_information_s contains "Client is not allowed to access the server" | parse additional_information_s with * "client_ip: " client_ip "," * | distinct client_ip - 运行后得到的
client_ip就是你要找的Data Sync服务IP,把它添加到中国云SQL Server的防火墙允许规则里就行。
方法二:获取同步组所在区域的SQL Data Sync服务IP范围
SQL Data Sync服务会使用其所在全球云区域的SQL服务IP段,你可以直接获取整个范围添加到防火墙:
- 用PowerShell命令获取对应区域的IP前缀(替换
<your-global-region>为你同步组所在的全球云区域,比如EastUS):Get-AzPublicIpAddressPrefix -ServiceTag Sql.<your-global-region> - 把返回的所有IP范围批量添加到中国云SQL Server的防火墙规则中,这样就算Data Sync服务换了IP也不会再被拦截。
方法三:用VNet对等/私有连接替代IP防火墙(更安全)
如果你的场景允许,这种方式比配置IP防火墙更可靠:
- 把全球云的同步组相关资源和中国云的SQL Server都部署在各自的VNet中
- 通过ExpressRoute或者VPN建立跨云的VNet对等连接,这样Data Sync服务就能通过私有网络访问中国云的SQL Server,完全绕开公网防火墙的限制。
另外还要提醒一句,因为是跨租户操作,确保你在全球云同步组里使用的账户,已经在中国云的SQL Server上拥有足够的登录和数据库读写权限哦!
备注:内容来源于stack exchange,提问作者Vyacheslav Benedichuk
相关产品推荐
相关产品推荐

