我最近将我的 SQL 2019 数据库从 VM 迁移到 Azure SQL。我使用了 MS 数据迁移工具,但不幸的是,它不会从临时表迁移数据。
所以。我只是使用该工具创建表模式,然后使用 SSIS 移动数据。
由于我现有的历史表中有数据,我想保留 SysStartDate 和 SysEndDate 字段。为了做到这一点,我必须在我的 Azure SQL 数据库中禁用 SYSTEM_VERSIONING 并在表上删除 PERIOD。
数据迁移成功,所以我在表上重新创建了我的 PERIOD,但是当我尝试使用指定的历史表启用 SYSTEM_VERSIONING 时,我收到以下错误:
消息 13573,级别 16,状态 0,第 34
行将 SYSTEM_VERSIONING 设置为 ON 失败,因为历史表 'xxxxxHistory'
包含重叠记录。
我觉得这很奇怪,因为现有表最初是作为临时表加入的,所以我不明白为什么现在会发生冲突。
ALTER TABLE xxx.xxx
ADD PERIOD FOR SYSTEM_TIME(SysStartTime, SysEndTime)
ALTER TABLE xxx.xxx
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE=xxx.xxxHistory))
我希望得到一个成功的临时表。相反,我收到以下错误:
消息 13573,级别 16,状态 0,第 34
行将 SYSTEM_VERSIONING 设置为 ON 失败,因为历史表 'xxxxxHistory'
包含重叠记录。
我运行以下查询来识别重叠,但我没有得到任何:
SELECT
xxxxKeyNumeric
,SysStartTime
,SysEndTime
FROM
xxxx.xxxxhistory o
WHERE EXISTS
(
SELECT
1
FROM
xxxx.xxxxhistory o2
WHERE
o2.xxxxKeyNumeric = o.xxxxKeyNumeric
AND o2.SysStartTime <= o.SysEndTime
AND o.SysStartTime <= o2.SysEndTime
AND o2.xxxxPK != o.xxxxPK
)
ORDER BY
o.xxxxKeyNumeric,
o.SysStartTime