2016-11-06 4 views
1

У меня есть таблица, которая хранит записи только на 3 месяца, а затем перезаписывает эти данные. Я хочу сохранить все данные, поэтому я сделал репликацию слияния между этой базой данных и другой базой данных, но данные по-прежнему перезаписываются в обеих базах данных (издатель и дистрибьютор)Данные перезаписываются в SQL Server 2008

Каков наилучший способ решить эту проблему?

+0

Вы, очевидно, необходимо изменить процесс, перезаписывает данные за 3 месяца! Если вы объясните, что это такое, мы можем предположить. Если вы не можете изменить это, вам необходимо выполнить еще одну ручную репликацию (то есть через SSIS). Так как вы пытаетесь выполнить репликацию, можно ли сохранить одну таблицу, перезаписываемую и сохранить другую таблицу со всей историей? У вашей таблицы есть ключ, который можно использовать для уникальной идентификации строк? –

+0

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

+0

репликация слияния будет добавлять и удалять, чтобы таблицы оставались идентичными. Это не будет содержать историю для вас. Являются ли базы данных на одном SQL Server или другом SQL Server? Если они находятся на одном сервере SQL Server, и у вас есть ключ, который вы можете использовать для идентификации строк, вы можете запустить один или два SQL-оператора, чтобы получить то, что вы хотите. Прошу пояснить это, и я отправлю ответ –

ответ

0

Используйте это:

INSERT INTO DB2..T1 (column1,column2,column3) 
SELECT column1,column2,column3 
FROM DB1..T1 As Src 
WHERE NOT EXISTS (
    SELECT * 
    FROM DB2..T1 As Tgt 
    WHERE Tgt.ID = Src.ID 
    ) 
+0

Спасибо, Ник за отличную поддержку –

0

Я попробовал следующий запрос, и это работает!

вставки в DB2..T1 выберите * от DB1 ..T1 где DB1 ..T1.ID не в (выберите идентификатор из DB2..T1)

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