更新时间:2025-12-12 GMT+08:00
恢复所有触发器及外键
- 恢复目的端所有触发器及外键。
- 恢复所有表级触发器
DECLARE @sql NVARCHAR(MAX) = ''; SELECT @sql = @sql + 'ENABLE TRIGGER ' + QUOTENAME(name) + ' ON ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_id)) + ';' + CHAR(13) FROM sys.triggers WHERE is_ms_shipped = 0 -- 排除系统触发器 AND parent_class_desc = 'OBJECT_OR_COLUMN'; -- 只包含表级触发器 EXEC sp_executesql @sql;

- 恢复所有外键
DECLARE @sql NVARCHAR(MAX) = ''; SELECT @sql = @sql + 'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + ' CHECK CONSTRAINT ' + QUOTENAME(name) + ';' + CHAR(13) FROM sys.foreign_keys; EXEC sp_executesql @sql;

- 恢复所有表级触发器
- 恢复目的端禁用的库级触发器。
ENABLE TRIGGER ALL ON DATABASE;

- 恢复源端服务层级。
- 恢复源端数据服务为原层级。
ALTER DATABASE smsa_mig MODIFY (EDITION = 'Standard', SERVICE_OBJECTIVE = 'S0'); -- 根据查询到的原数据库层级填写EDITION和SERVICE_OBJECTIVE

可使用sql脚本查询是否已恢复(可能需要等待,若未恢复,重新执行恢复)。
- 不支持CDC的Azure SQL Database需要执行此步骤。
- 不支持开启CDC的级别有:Basic、Standard S0、Standard S1 和 Standard S2。
- 不同版本的Azure SQL Database计费不同,用户需根据自身需要选择。
- 查询数据库的原服务层级。
SELECT database_name = DB_NAME(), edition, service_objective FROM sys.database_service_objectives;
- 恢复源端数据服务为原层级。
父主题: 割接数据