Azure SQL Data Sync数据库预配失败:执行超时过期问题求助
Azure SQL Data Sync生产环境预配超时问题解决思路
问题重现
生产环境使用Azure SQL Data Sync迁移本地SQL Server至Azure SQL时,出现预配超时错误:
Database provisioning failed with the exception "SqlException Error Code: -2146232060 - SqlError Number:-2, Message: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Inner exception: The wait operation timed out For more information, provide tracing ID 'redacted' to customer support."
低环境(生产库克隆副本)同步正常,本地代理使用拥有db_owner权限的服务账户,服务器规格与低环境一致,但无法通过代理UI调整命令超时,配置文件已加密。
解决思路
1. 调整本地代理的命令超时参数
虽然配置文件加密,但可在代理运行的服务器上通过以下步骤修改:
- 停止SQL Data Sync Agent服务
- 解密配置文件(以64位.NET框架为例):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -pdf "appSettings" "C:\Program Files\Microsoft SQL Data Sync\Agent" - 打开
Microsoft.SqlDataSync.DataSyncAgent.exe.config,在<appSettings>节点添加或修改命令超时(单位:秒,示例设为5分钟):<add key="CommandTimeout" value="300" /> - 重新加密配置文件:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -pef "appSettings" "C:\Program Files\Microsoft SQL Data Sync\Agent" - 重启SQL Data Sync Agent服务
2. 优化生产库预配阶段性能
- 临时禁用非必要对象:暂停生产库的非核心索引、触发器、作业,减少预配时的锁竞争与资源消耗,完成后恢复
- 缩小同步范围:先同步小表完成预配,再逐步添加大表;避免一次性同步大量大表
- 检查本地SQL Server设置:增大远程查询超时阈值(设为0表示无限制):
sp_configure 'remote query timeout', 0; RECONFIGURE; - 排查资源瓶颈:监控生产库的CPU、内存、磁盘IO使用率,确认无过载情况;即使服务器规格与低环境一致,生产库可能存在其他业务负载
- 优化网络连接:检查本地到Azure的网络延迟,若延迟过高,考虑启用VPN或ExpressRoute降低网络耗时
3. 重新预配的优化方案
- 先清理失败的预配对象:通过代理UI执行取消预配,删除本地与Azure端的同步相关对象
- 先做全量备份迁移:将本地生产库全量备份恢复到Azure SQL数据库,再启用Data Sync做增量同步,大幅减少预配阶段的数据传输量
- 若上述步骤无效,结合提供的
tracing ID联系微软技术支持,获取更详细的错误分析
内容的提问来源于stack exchange,提问作者Jimmy Bogard
相关产品推荐
相关产品推荐

