Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Merge replication column count  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Всем доброе время суток.

Есть уже существующая база с огромным количеством таблиц.
В ней есть несколько таблиц ну с очень большим количеством колонок. Соотвественно есть ошибка.

По сути структура сущностей в базе кривая, но переделывать никто ничего не будет.

Но надо сделать Merge Replication

У меня единственная идея - разбить эти таблицы по вьюхам, но не знаю получится ли.

Колонки там часто а-ля Address1, Address2 ... Address5, и большая часть NULLable.

Какой вообще стандартный обход этой проблемы?! Сам не рад видеть базу с этим количеством таблиц (часто глупым) и количеством колонок (иногда за 500).

К сообщению приложен файл. Размер - 13Kb
30 май 11, 22:28    [10735262]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Широкую таблицу нашинковать вертикально на необходимое количество таблиц. Реплицировать полученные таблицы. Исходную таблицу заменить на представление.
31 май 11, 00:13    [10735651]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Ха... в том то и проблема, кто бы дал мне это сделать...
Это вообще то, что мне пришло сразу в голову, но заказчик в позу становится, когда большая часть работ сделана.

Так ещё предлагает в задаче
"
Есть две базы (уже есть фактически) на двух серверах, данные частично различаются, даже структура иногла различалась в тех таблицах что мне попадались. Каждая база может быть в оффлайн (или канал пропасть), данные с одновременным изменением на двух серверах.
Необходимо полностью синхронизировать данные.
Причём изначально то их с мёржить надо...

"

Заказчик предлагает использовать транзакционну репликацию.
31 май 11, 11:08    [10736963]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Ну вот для начала и выясните у заказчика как он себе представляет репликацию любого типа для объектов с различающейся структурой.
31 май 11, 11:29    [10737216]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Я уверен что ему по сути Мёрж нужен.

Он просто нарыл что транзакционная репликация может использовать все 1024 колонки которые можно создать в таблице всё.

Кстати, то что он может разнести эти таблицы по двум другим я уверен, мне кажется просто не хочет либо переделывать структуру сущностей (как я понял база вообще сгенерена Microsoft Dynamics CRM) изначально, потому что тут в принципе можно нормализовывать когда у тебя Address1, Address2... (и так много полей), но при этом у него есть куча таблиц а-ля
ContactBase и 1-1 с ней связанная ContactExtensionBase.
Там он просто изначально так сделал.
Я вообще в голове не могу уложить "как можно так выделять сущность, что сделать ей столько атрибутов".
31 май 11, 13:30    [10738348]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
NIIIK
Есть две базы (уже есть фактически) на двух серверах, данные частично различаются, даже структура иногла различалась в тех таблицах что мне попадались

В этом случае спасет перекрестная транзакционная репликация хранимых процедур с контролем зацикливания. Естественно потребуется ручная первоначальная синхронизация. Ну и процедура допускает до 2100 параметров
31 май 11, 13:58    [10738597]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication column count  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Что интересно в БОЛе написано

BOL
[ @column_tracking = ] 'column_tracking'
Is the setting for column-level tracking. column_tracking is nvarchar(10), with a default of FALSE. true turns on column tracking. false turns off column tracking and leaves conflict detection at the row level. If the table is already published in other merge publications, you must use the same column tracking value used by existing articles based on this table. This parameter is specific to table articles only.

Note:
If row tracking is used for conflict detection (the default), the base table can include a maximum of 1,024 columns, but columns must be filtered from the article so that a maximum of 246 columns is published. If column tracking is used, the base table can include a maximum of 246 columns. For more information about the tracking level, see the "Tracking Level" section of How Merge Replication Detects and Resolves Conflicts.



Ну у меня 'column_tracking' установлен false
Пытаюсь выбрать только несколько полей из этой таблицы (через IDE) всё равно не хочет создавать публикацию, а как я понимаю когда "If row tracking is used" можно в таблице иметь 1024 колонки, но отфилтрова (выбрать) надо не более 246.

Пытался решить вроблему через две публикации.
31 май 11, 16:46    [10740383]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить