Odświeżenie danych usunęło poprzednie rekordy z bazy lokalnej

0

Cześć,

Mam takie pytanie, może ktoś kiedyś spotkał się z taką sytuacją:
Co jakiś czas pobieram dane z bazy produkcyjnej do bazy lokalnej (głównie pod testy).
Ostatnio utworzyłam nową tabele i wstawiło mi wszystkie rekordy 1:1 z bazy produkcyjnej (połączenie Linked Server, zapytanie OPENQUERY).
Na drugi dzień potrzebowałam świeżych danych i uruchomiłam procedurę odświeżającą dane (procedura z merge zgodnie za składnią

MERGE <target_table> [AS TARGET]
USING <table_source> [AS SOURCE]
ON <search_condition>
[WHEN MATCHED 
   THEN <merge_matched> ]
[WHEN NOT MATCHED [BY TARGET]
   THEN <merge_not_matched> ]
[WHEN NOT MATCHED BY SOURCE
   THEN <merge_matched> ];

I dodało mi do tabeli docelowej nowe rekordy z tabeli źródłowej, ale......."zniknęło" większość rekordów dla jednego produktu pobranych poprzedniego dnia. Wcześniej miałam 300 rekordów, a po odświeżeniu danych, z 300 (przez dobę nie było na nich żadnych modyfikacji) zrobiło się 30. Uruchomiłam jeszcze raz procedurę z merge i dodało trochę rekordów, ale nie wszystkie (teraz na bazie lokalnej mam ich 230 a w bazie produkcyjnej jest 300).
Ktoś może wie, co mogło się wydarzyć?

0

Nie wiem, bo wstawiłeś szablon merga, ale dla 300 rekordów:

łatwiej będzie:

delete from target where <search_condition>
go
insert into target
select * from source where <search_condition>

1 użytkowników online, w tym zalogowanych: 0, gości: 1