<nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="本文内容"> </nav><p><strong>适用于:</strong> <img src="https://docs.microsoft.com/zh-cn/azure/azure-sql/media/applies-to/yes-icon.svg?view=azuresql" role="presentation" data-linktype="relative-path">Azure SQL 数据库</p>
讯享网
本文介绍如何排查 Azure 中 SQL 数据同步的已知问题。 如果某个问题有了解决方法,会在本文中提供。
有关 SQL 数据同步的概述,请参阅什么是适用于 Azure 的 SQL 数据同步?
SQL 数据同步目前不支持 Azure SQL 托管实例或 Azure Synapse Analytics。
- 门户 UI 中针对与客户端代理关联的本地数据库执行同步失败
- 我的同步组停留在正在处理状态
- 在表中发现错误数据
- 同步成功后发现主键数据不一致
- 发现性能显著降低
- 有一条错误消息指出“无法在列 <column> 中插入值 NULL。 此列不允许 null 值。”这是什么意思,如何解决该错误?
- 数据同步如何处理循环引用? 也就是说,如果在多个同步组中同步相同的数据,这些数据是否不断更改?
- 错误消息“Sync0022 客户无权执行 syncGroupOperationResults/read 操作”
SQL 数据同步门户 UI 中针对与客户端代理关联的本地数据库执行同步失败。 在运行代理的本地计算机上,事件日志中出现 错误。 这些错误指出磁盘空间不足。
- 原因。 驱动器空间不足。
- 解决方法。 在 %TEMP% 目录所在的驱动器上腾出更多的空间。
SQL 数据同步中的同步组长时间处于“正在处理”状态。 该同步组不响应 stop 命令,并且日志中未显示新条目。
以下任何条件均可导致同步组停滞在“正在处理”状态:
- 原因。 客户端代理处于脱机状态
- 解决方法。 请确保客户端代理处于联机状态,然后重试。
- 原因。 客户端代理已卸载或缺失。
- 解决方法。 客户端代理是否已卸载或缺失:
- 将代理 XML 文件(如果存在)从 SQL 数据同步安装文件夹中删除。
- 在某台本地计算机(可以是相同或不同的计算机)上安装代理。 然后,提交门户中针对显示为脱机的代理生成的代理密钥。
- 原因。 SQL 数据同步服务已停止。
- 解决方法。 重启 SQL 数据同步服务。
- 在“开始”菜单中,搜索“服务”。
- 在搜索结果中,选择“服务”。
- 找到“SQL 数据同步”服务。
- 如果服务状态为“已停止”,请右键单击服务名称,选择“启动”。
如果在同步操作中包含来自不同数据库架构的同名表,则同步后表中会出现错误数据。
- 原因。 SQL 数据同步预配过程针对不同架构中的同名表使用相同的跟踪表。 因此,这两个表中的更改会反映在同一个跟踪表中。 这会导致同步期间发生错误的数据更改。
- 解决方法。 确保同步中涉及的表名称不同,即使这些表属于数据库中不同的架构。
系统报告同步成功,且日志中未显示失败或跳过的行,但是,发现同步组中数据库间的主键数据不一致。
- 原因。 此结果是设计使然。 任何主键列中的更改都会导致被更改主键所在行中的数据不一致。
- 解决方法。 若要避免此问题,请确保主键列中的数据没有进行任何更改。 若要在发生此问题后予以解决,请从同步组中的所有终结点内删除包含不一致数据的行。 然后重新插入该行。
性能显著降低,甚至达到了无法打开数据同步 UI 的程度。
- 原因。 最可能的原因是同步循环。 当同步组 A 的同步触发了同步组 B 的同步,进而又触发了同步组 A 的同步时,就会出现同步循环。实际情况可能更为复杂,其中可能涉及循环中两个以上的同步组。 问题在于,存在因同步组彼此重叠而导致的同步循环触发。
- 解决方法。 **解决方案就是预防。 确保同步组中没有循环引用。 由一个同步组同步的任何行都不能由其他同步组同步。
此错误消息表示发生了两个以下问题之一:
- 某个表没有主键。 若要解决此问题,请将主键添加到要同步的所有表。
- CREATE INDEX 语句中可能存在 WHERE 子句。 数据同步不会处理这种情况。 若要解决此问题,请删除 WHERE 子句,或手动对所有数据库进行更改。
数据同步不会处理循环引用。 请务必避免循环引用。
若要排查客户端代理问题,请参阅排查 Data Sync Agent 问题。
- 有消息指出“磁盘空间不足”
- 无法删除同步组
- 无法注销 SQL Server 数据库
- 没有足够的特权启动系统服务
- 数据库具有“过期”状态
- 同步组具有“过期”状态
- 在卸载或停止代理后的三分钟内无法删除同步组
- 还原丢失或损坏的数据库时,会发生什么情况?
- 原因。 需要删除残留的文件时,可能会显示“磁盘空间不足”消息。 出现此消息的原因可能是使用了防病毒软件,或者在尝试执行删除操作时文件处于打开状态。
- 解决方法。 手动删除 %temp% 文件夹中的同步文件 ()。 然后,删除 %temp% 文件夹中的子目录。
尝试删除同步组失败。 以下任何情况都可能导致删除同步组失败:
- 原因。 客户端代理处于脱机状态。
- 解决方法。 确保客户端代理已联机,然后重试。
- 原因。 客户端代理已卸载或缺失。
- 解决方法。 客户端代理是否已卸载或缺失:
a. 将代理 XML 文件(如果存在)从 SQL 数据同步安装文件夹中删除。
b. 在某台本地计算机(可以是相同或不同的计算机)上安装代理。 然后,提交门户中针对显示为脱机的代理生成的代理密钥。 - 原因。 数据库处于脱机状态。
- 解决方法。 确保所有数据库都处于联机状态。

- 原因。 同步组正在预配或同步。
- 解决方法。 等待预配或同步过程完成,然后重试删除同步组。
- 原因。 很可能是因为正在尝试注销一个已被删除的数据库。
- 解决方法。 若要注销某个 SQL Server 数据库,请选择该数据库,再选择“强制删除”。
如果此操作无法从同步组中删除数据库:
- 请停止再重启客户端代理主机服务。
a. 选择“开始”菜单。
b. 在搜索框中输入 services.msc。
c. 在搜索结果窗格的“程序”部分,双击“服务”。
d. 右键单击“SQL 数据同步”服务。
e. 如果该服务正在运行,请将其停止。
f. 右键单击该服务,并选择“启动”。
g. 检查数据库是否仍已注册。 如果已不再注册数据库,则操作完成。 否则,请继续执行下一步。 - 打开客户端代理应用 (SqlAzureDataSyncAgent)。
- 选择“编辑凭据”,输入数据库的凭据。
- 继续执行注销。
- 请停止再重启客户端代理主机服务。
- 原因。 在两种情况下会发生此错误:
- 用户名和/或密码不正确。
- 指定的用户帐户没有足够的特权作为服务登录。
- 解决方法。 向用户帐户授予“作为服务登录”凭据:
- 转到“开始”>“控制面板”>“管理工具”>“本地安全策略”>“本地策略”>“用户权限管理”。
- 选择“作为服务登录”。
- 在“属性”对话框中添加用户帐户。
- 依次选择“应用”、“确定” 。
- 关闭所有窗口。
- 原因。 SQL 数据同步会从服务中删除已脱机达 45 天或更长时间的数据库(从数据库脱机时算起)。 如果数据库已脱机达 45 天或更长时间,然后重新联机,则其状态会变为“过期”。
- 解决方法。 确保所有数据库都不会脱机达 45 天或更长时间,即可避免“过期”状态。
如果数据库的状态为“过期”:
- 从同步组中删除处于“过期”状态的数据库。
- 将数据库添加回同步组。
- 原因。 如果在 45 天的整个保留期内未能应用一个或多个更改,则同步组可能会过期。
- 解决方法。 若要避免“过期”状态,请定期在历史记录查看器中检查同步作业的结果。 调查并解决未能应用的任何更改。
如果同步组的状态为“过期”,请删除同步组并重新创建。
在卸载或停止关联的 SQL 数据同步客户端代理后的三分钟内无法删除同步组。
- 解决方法。
- 在关联的同步代理处于联机状态时删除同步组(推荐)。
- 如果代理处于脱机状态但已安装,请在本地计算机上将其联机。 等待代理状态在 SQL 数据同步门户中显示为“联机”。 然后删除同步组。
- 如果代理因为被卸载而处于脱机状态:
a. 将代理 XML 文件(如果存在)从 SQL 数据同步安装文件夹中删除。
b. 在某台本地计算机(可以是相同或不同的计算机)上安装代理。 然后,提交门户中针对显示为脱机的代理生成的代理密钥。
c. 尝试删除同步组。
如果从备份还原丢失或损坏的数据库,数据库所属的同步组中的数据可能不收敛。
如果收到错误消息 ,则表示尝试执行该操作的帐户没有足够的订阅级权限。 添加:
- Microsoft.Sql/locations/syncMemberOperationResults/read
- “Microsoft.Sql/locations/syncAgentOperationResults/read”
- Microsoft.Sql/locations/syncGroupOperationResults/read
有关详细信息,请参阅资源提供程序操作 RBAC 和 具有最低所需权限的 SQL 数据同步数据库帐户。
- 什么是 Azure SQL 数据同步?
- 教程:设置 Azure SQL 数据库和 SQL Server 的数据库之间的 SQL 数据同步
- 使用 PowerShell 在 Azure SQL 数据库中的多个数据库之间同步数据
- 使用 PowerShell 在 SQL 数据库和 SQL Server 之间同步数据
- SQL 数据同步的 Data Sync Agent
- Azure SQL 数据同步**实践
- Azure SQL 数据库与 Azure SQL 托管实例中的监视和性能优化
- 在 Azure SQL 数据同步中自动复制架构更改
- 使用 PowerShell 更新现有同步组中的同步架构
- 什么是 Azure SQL 数据库?
- 数据库生命周期管理


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/151106.html