症状
假设使用 NEWSEQUENTIALID () 函数为 Linux SQL Server 2017 中的表生成唯一 GUID。 重启SQL Server后,NEWSEQUENTIALID () 函数可能会生成一个 GUID,该 GUID 是此函数生成的先前 GUID 的副本。
详细信息
Linux 上的 SQL Server将顺序 UUID 种子存储在 /var/opt/mssql/.system/instance_id 中,并在启动期间递增。 在发生系统故障时备份 instance_id 文件。 如果文件丢失,则缺少种子,并且重新生成新的种子。 初始种子生成基于随机位模式和 UUID 以避免冲突。 但是,必须按顺序排序的新种子在种子丢失后可能不会按顺序排序。
解决方法
此问题已在 SQL Server 的累积更新中进行了修复:
关于SQL Server的累积更新:
SQL Server的每个新累积更新都包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。