2013-12-24 3 views
2

У меня есть таблица, которая содержит столбцы GUID и Name, и мне нужно получить последние вставленные строки, чтобы я мог загрузить ее в таблицу2.Извлечение последних вставленных строк

Но как бы узнать последние данные в таблице1. Кажется, я потерялся в этом, я прочитал аналогичные должности, задающие один и тот же вопрос, но ответы, похоже, не работают для моей ситуации.

Я использую SQL Server 2008 и загружать свои данные с помощью SSIS

+1

Вы сохраняете посттайм в таблице? – Kirk

+1

Примечание. SCOPE_IDENTITY() и @@ IDENTITY не будут работать для таблицы с первичным ключом GUID. –

ответ

3

1 - Один из способов сделать это с триггерами. Просмотрите мою запись в блоге, в которой показано, как копировать данные из одной таблицы в другую на вставке.

Триггеры для репликации данных = http://craftydba.com/?p=1995

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

2 - Другой способ сделать это - добавить дату изменения в свою первую таблицу и изменить свой пакет SSIS.

ALTER TABLE [MyTable1] 
ADD [ModifyDate] [datetime] NULL DEFAULT GETDATE(); 

Затем измените свой пакет SSIS. В потоке управления добавьте задачу выполнения SQL. Вставьте данные из [MyTable1] в [MyTable2] с помощью TSQL.

INSERT INTO [MyTable2] 
SELECT * FROM [MyTable1] 
WHERE [ModifyDate] >= 'Start Date/Time Of Package'; 

Execute SQL Task = http://technet.microsoft.com/en-us/library/ms141003.aspx

Это будет быстрее, чем поток данных, или выполнить команду OLEDB, так как вы работаете с данными на сервере.

+0

Мне очень нравится ваша идея. Я не упоминал, что Table2 - это связанная таблица серверов, если бы ваш menthod был идеальным на связанном сервере? – Djbril

+0

Используйте параметр 2, если таблица 2 является связанным сервером. Я никогда не пробовал триггеры с привязанной целевой таблицей, звучал медленно и много накладных расходов. –

Смежные вопросы