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

Откуда: Minsk
Сообщений: 59
Уважаемые Гуру, помогите пожалуйста найти решение.

на одном сервере (СЕРВЕР 1) имеется набор таблиц, из которых по определнным правилам хранимая процедура формирует датасет.
этот датасет должен быть выгружен на внешний сервер (СЕРВЕР 2), в одну таблицу ТАБЛИЦА 1. для выгрузки применяю Linked Server.
После выгрузки, пользователи продолжают работать с таблицами на СЕРВЕРе 1: изменяют отдельные таблицы. В основном разные пользователи отвечают за разные таблицы на СЕРВЕРе 1 и меняют только свои. Время от времени пользователи хотят обновлять данные своих таблиц во внешней выгрузке.
Сейчас сделано следующим образом:
1 в отдельной таблице ставлю флаг: идет обновление таблицы 1
2 формирую данные только по изменным пользователем таблицам
3 удаляю на СЕРВЕРе 2 из ТАБЛИЦА 1 данные относящиеся к измененным пользователем таблицам
4 вставляю данные с СЕРВЕРа 1 на СЕРВЕР 2 в ТАБЛИЦу 1
5 снимаю флаг: "идет обновление таблицы 1"

Возникает 2 проблемы:
1 если происходит аварийное завершение процедуры, флаг "идет обновление таблицы 1" остается висеть.
поместить установку флага и шаги обновления в одну транзацкию невозможно, потому что обновление производиться через Linked Server и распределнные транзацкии применять нельзя, в виду отсувия прав на сервер, поэтому просто добавил время устаревания флага, но это плохое решение, хочется заменить.

2 пользователи очень хотят работать одновременно, и не получать сообщение что необходимо дождаться заверщеия обновления ТАБЛИЦы 1 другим пользователем. надо как-то ставить их запросы в очередь или как-то позволять обновлять фрагменты не пересекающиеся фрагменты ТАБЛИЦы 1.
31 янв 12, 13:58    [12003774]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить