我们的应用程序的数据库(SQL Server 2005)具有应用程序元数据的表。这些元数据表(我的意思是插入/更新/删除)的更改可以通过GUI(不使用SSMS)完成。数据库元数据版本控制和同步
大多数时候开发人员都会更改自己的数据库副本。问题是 - 如何将这些更改与元数据记录“合并”为一个?问题是没有“更新”脚本,并且具有相同主键的行可能意味着不同的事情。一种可能的方法是使用像SQL Data Compare(来自RedGate)这样的工具来查看哪些行发生了变化并通过唯一键进行比较。
CREATE TABLE [dbo].[Type](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Type] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Type] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
CREATE UNIQUE NONCLUSTERED INDEX [Type] ON [dbo].[Type] ([Type] ASC)
CREATE TABLE [dbo].[Form](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[TypeID] [int] NOT NULL,
CONSTRAINT [PK_Form] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
CREATE UNIQUE NONCLUSTERED INDEX [Name] ON [dbo].[Form] ([Name] ASC)
ALTER TABLE [dbo].[Form] WITH CHECK ADD CONSTRAINT [FK_Form_Type] FOREIGN KEY([TypeID]) REFERENCES [dbo].[Type] ([ID])
ALTER TABLE [dbo].[Form] CHECK CONSTRAINT [FK_Form_Type]
第一DB包含:该问题可以通过例如将更好地理解
类型
1, '第一类型'
2, '第二类型'
表
1, '第一种形式',1
2,'第二种形式',2
第二个数据库包含:
类型
1, '第一类型'
2, '第三类型'
3, '第二类型'
表
1, '第一形式',1
2,“第二表格',3
表格“表格”外键到表格“类型”是不同的,但逻辑上它们是相同的(因为它们引用相同的类型名称)。
我们如何才能以更“智能”的方式比较这些数据库?没有Red Gate(或任何其他第三方)工具,是否有可能做到这一点?另外,如何修改元数据,而不是使用“更新”脚本,而是通过GUI进行更改?
我们有独特的索引,但我们仍然需要小时的建议来智能“合并”更改 – Sazug 2010-06-03 14:51:24
使用SSIS进行同步的任何示例? – Sazug 2010-06-04 08:25:25
我认为在这里发布整个SSIS解决方案并不合理。只需最少的搜索,你应该能够找到几个SSIS教程。如果您没有太多的SSIS经验,那么开箱即用,仅仅将对象从一个地方转移到另一个地方会更有用 - 而不是合并两个不同的来源。在这种情况下,您可能更适合使用第三方产品。 – 2010-06-04 13:28:24