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

Откуда:
Сообщений: 267
Коллеги, вопрос. Как реализовать следующий механизм?

В таблице Table1 хранятся данные за последнюю неделю. Создана аналогичная пустая таблица Table2. Необходимо из таблицы Table1 переносить данные в таблицу Table2 и там сохранять. Т.е. необходимо, чтобы Table2 хранила данные за все дни. Какие наиболее правильные способы реализации?

Заранее благодарю за советы!

ps: MS SQL Server 2012
10 дек 13, 14:32    [15271478]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
xm?!_(mo3roBa9_akTuBHocTb)
Какие наиболее правильные способы реализации?

Команда DELETE c фразой OUTPUT
10 дек 13, 14:34    [15271501]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
xm?!_(mo3roBa9_akTuBHocTb)
Member

Откуда:
Сообщений: 267
т.е. необходимо не переносить (вырезать), а копировать.
10 дек 13, 14:41    [15271589]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
xm?!_(mo3roBa9_akTuBHocTb)
Member

Откуда:
Сообщений: 267
Glory,

INSERT INTO с OUTPUT?
10 дек 13, 14:42    [15271603]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
xm?!_(mo3roBa9_akTuBHocTb)
т.е. необходимо не переносить (вырезать), а копировать.

Команда INSERT
10 дек 13, 14:42    [15271605]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
xm?!_(mo3roBa9_akTuBHocTb)
Member

Откуда:
Сообщений: 267
Как решить проблему с дублированием, чтобы исключить добавление строк в Table2 которые уже были добавлены?
Сделать триггер на INSERT в Table1?

Нет ли уже предусмотренного решения в SQL Server для такой задачи, типа какого-то аналога репликации таблицы?
10 дек 13, 14:57    [15271737]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Crimean
Member

Откуда:
Сообщений: 13148
секционирование :)
10 дек 13, 14:58    [15271755]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
xm?!_(mo3roBa9_akTuBHocTb)
Как решить проблему с дублированием, чтобы исключить добавление строк в Table2 которые уже были добавлены?
Сделать триггер на INSERT в Table1?

Нет ли уже предусмотренного решения в SQL Server для такой задачи, типа какого-то аналога репликации таблицы?


конечно есть not exists, not in, left join выбирай не хочу.
10 дек 13, 15:07    [15271837]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
xm?!_(mo3roBa9_akTuBHocTb)
Как решить проблему с дублированием, чтобы исключить добавление строк в Table2 которые уже были добавлены?
Сделать триггер на INSERT в Table1?

Запрос написать с проверкой. Чтобы он не добавлял дубликаты.
10 дек 13, 15:30    [15272079]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
xm?!_(mo3roBa9_akTuBHocTb)
Member

Откуда:
Сообщений: 267
Всем спасибо!

Поставил триггер на таблицу [Table1]:

CREATE TRIGGER [dbo].[Trigger1]
   ON  [dbo].[Table1]
   AFTER INSERT

AS 

BEGIN
	SET NOCOUNT ON;

	INSERT INTO [AnotherDB].[dbo].[Table2] (
             [id], [text]
	)
	SELECT 
		B.[id], B.[text]
	FROM  INSERTED AS B
WHERE B.[id] NOT IN (select [id] from [AnotherDB].[dbo].[Table2] AS C);

END
10 дек 13, 16:50    [15272775]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
xm?!_(mo3roBa9_akTuBHocTb)
Поставил триггер на таблицу [Table1]:

А что будет с [Table2] при удалении или изменении записей в [Table1] ?
10 дек 13, 16:53    [15272798]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
xm?!_(mo3roBa9_akTuBHocTb)
Member

Откуда:
Сообщений: 267
Эти события не важны для Table2, важно только добавление новых записей в Table1.
Вообще, Table1 управляется приложением, которое не изменяет записи в этой таблице, только добавляет или удаляет. Для последнего (удаления данных) и придумана таблица Table2.
10 дек 13, 19:51    [15273655]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
shandai
Member

Откуда:
Сообщений: 44
xm?!_(mo3roBa9_akTuBHocTb)
А если в таблицу 1 будет вставлено сразу несколько записей, как это, например, можно сделать в Access, то триггер отработает только на первую, все остальные будут проигнорированы. Придется вводить курсор, для обработки каждой вставленной записи.
11 дек 13, 05:10    [15274560]     Ответить | Цитировать Сообщить модератору
 Re: Репликация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
shandai
А если в таблицу 1 будет вставлено сразу несколько записей, как это, например, можно сделать в Access, то триггер отработает только на первую, все остальные будут проигнорированы.

Что за бред.
В MSSQL триггер срабатывает на событие. Независимо от числа записей
11 дек 13, 10:13    [15275246]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить