Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Изменение данных при репликации / 10 сообщений из 10, страница 1 из 1
20.06.2002, 11:12:40
    #32033273
Леха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
Каким образом можно во вторую, идентичную реплицируемой, таблицу записать измененное значение (флаг) не зависимо от того какой там был раньше.
надеялся можно в фильтре прописать
Select col1,col2, 1 FROM <<TABLE>> WHERE ...
фиг...
Как то можно через DTS...
а как ...
...
Рейтинг: 0 / 0
20.06.2002, 15:10:06
    #32033334
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
Кто-нибудь (включая автора) понял вопрос?
...
Рейтинг: 0 / 0
20.06.2002, 15:31:17
    #32033344
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
а какой RowFilter прописывал?
...
Рейтинг: 0 / 0
21.06.2002, 09:13:28
    #32033425
Леха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
Для GreenSunrise:
Две таблицы в разных базах.
Из первой во вторую переносятся данные с флагом Col3=1
Из второй в первую та же картина.
чтобы не летала запись туда сюда нужно сохранять в подписчика Col3=0. Как реализовать? :)

Для AAron:
SELECT <published_columns> FROM <<TABLE>> WHERE Col3=1
Или они разных типов бывают?
Если нет- какая теперь разница, (для меня)
Есть еше в свойстве Table Article Properties-> commands - (ну команды, процедуры)
Если туда загнать процедуру которая будет изменять значение поля Col3 на 0.
...
Рейтинг: 0 / 0
21.06.2002, 10:19:30
    #32033432
Олег Яговкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
IMHO, если репликация merge, то записи с любым флагом "летать туда сюда" не будут т.к. есть поле rowguid автоматически создающееся при настройке репликации по кот. агенты репликации и ориентируются для уникального определения записи.

Если вам необходимо собирать записи с разных серверов, возможно лучше создать в таблице для каждой записи идентификатор сервера и его применить в фильтре.

Если вы используете флаг для своих целей, возможно не стоить применять его в репликации.
Может я так же чего то недопонял т. к. две таблицы - слабый пример для системы репликации. Необходимо рассматривать саму задачу для кот. эти две таблицы применяются.
...
Рейтинг: 0 / 0
24.06.2002, 08:20:36
    #32033577
Леха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
Уважаемый Олег Яговкин, думаю было бы нахальством просить сделать за меня работу :)
Плохо объяснил, попробую еще раз.
Есть два сервера (на каждом публикуются данные). С каждого данные отсылаются Push подпиской с использованием фильтра Col3=1 (т.е. передавать только измененные записи, у которых Col3=1, остальные изменения не учитывать).
Как я понимаю, если было сделано обновление (независимо руками или репликацией) изменения публикуются и отправляются на другой сервер, где делают обновление.

“то записи с любым флагом "летать туда сюда" не будут т.к. есть поле rowguid” – я вот и не пойму почему не будет обновления. Вроде изменения есть. Rowguid – сравнивается с подписчиком и если совпадает – не публикуется – так что ли?
...
Рейтинг: 0 / 0
24.06.2002, 11:49:32
    #32033597
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
Так а зачем сохранять на подписчике col3 = 0? С чего запись будет "туда-сюда" летать?! С настроенным фильтром будут проходить только изменения записей, соответствующих ему. Но уж никак не "туда-сюда" :-))) Или Вы хотите, чтобы поле col3 вообще не участвовало в репликации? И было различным на паблишере и подписчике? Тогда стоит задуматься о публикации не таблиц, а вьюх.
...
Рейтинг: 0 / 0
24.06.2002, 14:06:49
    #32033622
Олег Яговкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
2Леха.
В догонку GreenSunrise(так как в выходные нету интернету).

>>Вроде изменения есть. Rowguid – сравнивается с подписчиком и если совпадает – не публикуется – так что ли?

При любых операциях с записью в системе репликации отрабатываются триггеры(кот. так же уст-ся автоматически). Данные триггеры заносят все изменения в системные табл. репликации которые затем читаются агентами репликации. Т.е. если есть изменения для записи с данным rowguid, то она соответствующим образом изменяется как на публикующем, так и на подписчике.


>>с использованием фильтра Col3=1 (т.е. передавать только измененные записи, у которых Col3=1, остальные изменения не учитывать).

Если же вам необходимо например из 1000 записей в табл. выделить напр. 100 (с Col3=1) (для ваших каких то целей)то при работе агентов репликации, изменения производимые в этих записях (т.к. они участвуют в фильтре) и будут передаваться между двумя таблицами.

Если же вы вручную (в смысле программно) устанавливаете флаг для измененных записей чтобы их и передавать, то при репликации это не нужно.
...
Рейтинг: 0 / 0
25.06.2002, 06:34:45
    #32033723
Леха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
>>С настроенным фильтром будут проходить только изменения записей, соответствующих ему
Согласен, но фильтр в обеих публикациях одинаковый

>>Или Вы хотите, чтобы поле col3 вообще не участвовало в репликации? И было различным на >>паблишере и подписчике? Тогда стоит задуматься о публикации не таблиц, а вьюх.
Надеюсь, будет понятно из нижеизложенного. :)

>>Если же вам необходимо например из 1000 записей в табл. выделить напр. 100 (с Col3=1) (для >>ваших каких то целей)то при работе агентов репликации, изменения производимые в этих >>записях (т.к. они участвуют в фильтре) и будут передаваться между двумя таблицами.

>>Если же вы вручную (в смысле программно) устанавливаете флаг для измененных записей >>чтобы их и передавать, то при репликации это не нужно.

И то и другое.
Дело в том, что данные должны передаваться не при всех изменениях, т.е. если, например, изменения в Col1- обновлять (причем изменение может таковым считаться при изменении на конкретные значения), если в Col2 –нет – можно еще сказать о зависимости от того, например, какой пользователь изменяет (это я просто так сказал :)).

>>. Т.е. если есть изменения для записи с данным rowguid, то она соответствующим образом >>изменяется как на публикующем, так и на подписчике.

Уточню :), она - rowguid (в том числе)? Если да, то, что делать, если строка изменилась, но не прошла по фильтру, в следующий раз при изменении удовлетворяющем фильтрации rowguid на подписчике не найдется, и запись будет INSERTнута – а ключ вставляемой записи в таблице уже есть.

И на счет “туда сюда” проверял я, агенты при изменении любой записи начинают показывать, что «выполняется одна транзакция 2 команды». Завершения этого я не дождался (оставлял на ночь :)). Или оно так и быть надо?

Спасибо за советы.
...
Рейтинг: 0 / 0
25.06.2002, 08:40:15
    #32033735
Олег Яговкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных при репликации
>>Уточню :), она - rowguid (в том числе)?

rowguid не меняется . Это уникальный идентификатор кот. сервер присваивает каждой записи. Значение этого идентификатора складывается из идентификатора сетевой карты(кот. уникален в мире насколько я понял) и какого то временного интервала. Т. е. при INSERT записи вставляется каждый раз новый GUID (уникальный в мире до 3500 года, что гарантирует Microsoft) и дальнейшие изменения записи отслеживаются триггерами репликации.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Изменение данных при репликации / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]