В базе данных нашего приложения (SQL Server 2005) есть таблицы для метаданных приложения. Изменения в этих таблицах метаданных (я имею в виду insert/update/delete) можно выполнить с помощью 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]
Первой БД содержит:
Типа
1, 'Первого типа'
2, 'Второго типа'
форма
1, 'Первая форма', 1
2, 'Вторая форма', 2
Вторая БД содержит:
Тип
1, 'Первый тип'
2, 'Третий тип'
3, 'второго типа'
Form
1, 'Первая форма', 1
2, «Второй form ', 3
Таблица «Внешний вид формы» для таблицы «Тип» различен, но логически они одинаковы (поскольку они ссылаются на одно и то же имя типа).
Как мы можем сравнить эти базы данных более «интеллектуальным» способом? Есть ли возможность сделать это без инструментов Red Gate (или любых других сторонних разработчиков)? Кроме того, как метаданные версии, когда они меняются не с помощью «обновлений», а с помощью графического интерфейса?
У нас есть уникальные индексы, но нам нужны советы по часам, чтобы «объединить» изменения разумно. – Sazug
Любой пример использования SSIS для синхронизации? – Sazug
Я не думаю, что здесь можно разместить все решение SSIS. При минимальном поиске вы сможете найти несколько руководств по SSIS. Если у вас нет большого опыта работы с SSIS, то из коробки это более полезно для простой передачи объектов из одного места в другое, а не для объединения двух разрозненных источников. В этом случае вам, вероятно, будет лучше со сторонним продуктом. –