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

Откуда:
Сообщений: 500
Вот такая ситуация.
Есть рабочая база Base на сервере Server1 , с нее делается репликация BaseRep на другой сервер Server2.Публикуются не все таблицы издателя. На Server2 из базы BaseRep, с помощью dts-пакета копируются данные в другую базу vert, по такому условию:
select * from dok_arch
where ( net=1) and (un>?) order by un

Можно ли сделать так, чтобы после копиравания данных из BaseRep в поле,например check, проставлялась отметка, что эта строка уже скопирована. И как это сделать?
И еще, т.к. BaseRep является подписчиком, будут ли затираться записи с измененным полем check при следующем срабатывании репликации? Репликация отрабатывает каждый час.
30 сен 09, 10:29    [7723301]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
lenash
Member

Откуда:
Сообщений: 500
Тип репликации - Merge
30 сен 09, 11:00    [7723467]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 641
lenash,

В репликациях не шарю. Могу предложить такой вариант: в базе BaseRep сделай таблицу и в DTS пакете сладывай в неё ID-шники скопированных записей. А в свой запрос добавь EXCEPT или NOT EXISTS
30 сен 09, 11:22    [7723604]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
lenash
Member

Откуда:
Сообщений: 500
А подскажите как исправить запрос, так чтобы записывать id в другую таблицу?
30 сен 09, 12:02    [7723859]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 641
lenash,
Получится 2 запроса - один перенос, второй запись во вспомогательную таблицу
select *
    from dok_arch
    where (dok_arch.net=1)
          and (dok_arch.un>?)
          and not exists(select 1 from <таблица_check> where <таблица_check>.id = dok_arch.id)
order by dok_arch.un

insert into <таблица_check> (id)
select dok_arch.id
    from dok_arch
    where (dok_arch.net=1)
          and (dok_arch.un>?)
          and not exists(select 1 from <таблица_check> where <таблица_check>.id = dok_arch.id)
Какт-о так, не проверял.
30 сен 09, 12:22    [7723980]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
lenash
Member

Откуда:
Сообщений: 500
А можно 2 запроса в одной dts-пакете?
30 сен 09, 12:40    [7724133]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 641
lenash,

Да. Можно и больше
30 сен 09, 12:44    [7724172]     Ответить | Цитировать Сообщить модератору
 Re: Dts. Добавление записей в базу.  [new]
lenash
Member

Откуда:
Сообщений: 500
Спасибо большое. Ваш вариант подошел.
30 сен 09, 13:10    [7724344]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить