我有一个处于预生产阶段的 Azure SQL 数据库,它具有多个架构。对于一个特定的模式,我们需要有一种机制,客户可以使用它进行测试,而开发人员也可以不断合并收到的反馈更改。除了完全创建另一个数据库之外,有没有办法在同一个现有数据库中实现这一点?就像在同一个数据库中创建 2 个模式,然后有一种机制可以在需要时自动同步结构和数据。
正如您提到的,您想要在 Azure SQL 数据库中为具有两种不同架构的同一数据库创建数据同步,这是不可能的。
因为当同步组内的不同架构中存在同名表时,SQL Data Sync 无法准确找到要更新的表,从而导致潜在的数据冲突和错误。
作为一种解决方法,如果您需要在同一数据库内的不同模式之间同步数据, 您可以在每个架构中设置存储过程来提取要同步的数据 并使用单独的数据库作为“集线器”来促进模式之间的数据传输。
CREATE DATABASE HubDB;
USE Schema1;
CREATE PROCEDURE ExtractDataFromSchema1
AS
BEGIN
SELECT * FROM YourTable1; -- Replace with your actual table and columns
END;
对架构执行相同的操作 2 在每个架构中,创建存储过程以提取所需的数据。
接下来,在 HubDB 中创建存储过程以从每个架构中提取数据并将其插入到 hub 中。
USE HubDB;
CREATE PROCEDURE SyncDataFromSchema1
AS
BEGIN
INSERT INTO HubTable (Column1, Column2, ...)
EXEC Schema1.dbo.ExtractDataFromSchema1;
END;
CREATE PROCEDURE SyncDataFromSchema2
AS
BEGIN
INSERT INTO HubTable (Column1, Column2, ...)
EXEC Schema2.dbo.ExtractDataFromSchema2;
END
在上面创建了一个单独的数据库,它将用作数据传输的中心。 创建存储过程来提取数据 接下来,您可以安排这些存储过程定期运行。