Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
SSIS Integration Runtime w ramach usługi Azure Data Factory
W bieżącej wersji SQL Server Integration Services instrukcja SQL w zadaniu Execute SQL może zawierać instrukcję MERGE . Ta MERGE instrukcja umożliwia wykonanie wielu operacji INSERT, UPDATE i DELETE w ramach jednej instrukcji.
Aby użyć instrukcji MERGE w pakiecie, wykonaj następujące kroki:
Utwórz zadanie przepływu danych, które ładuje, przekształca i zapisuje dane źródłowe w tymczasowej lub przejściowej tabeli.
Utwórz zadanie Execute SQL zawierające instrukcję MERGE .
Połącz zadanie Przepływ danych z zadaniem Execute SQL i użyj danych w tabeli przejściowej jako danych wejściowych dla instrukcji MERGE .
Uwaga / Notatka
Mimo że instrukcja MERGE w tym scenariuszu zwykle wymaga tabeli przejściowej, wydajność instrukcji MERGE jest zwykle wyższa niż wydajność wyszukiwania wykonywanego wiersz po wierszu przez transformację Lookup. MERGE jest również przydatny, gdy duży rozmiar tabeli odwołań może stanowić obciążenie dla pamięci dostępnej dla transformacji Lookup, używanej do buforowania tabeli odwołań.
Korzystanie z MERGE
Zazwyczaj używasz instrukcji MERGE , gdy chcesz zastosować zmiany, które obejmują wstawki, aktualizacje i usunięcia z jednej tabeli do innej tabeli. Przed SQL Server 2008 (10.0.x) ten proces wymagał zarówno przekształcenia typu Lookup, jak i wielu transformacji poleceń OLE DB. Przekształcenie wyszukiwania wykonało wyszukiwanie wiersz po wierszu, aby określić, czy każdy wiersz jest nowy lub zmieniony. Przekształcenia poleceń OLE DB następnie wykonały niezbędne INSERToperacje , UPDATEi DELETE . Począwszy od programu SQL Server 2008 (10.0.x) pojedyncza instrukcja MERGE może zastąpić zarówno transformację Lookup, jak i odpowiadające jej transformacje OLE DB Command.
MERGE z obciążeniami narastającymi
Funkcja przechwytywania zmian danych, która jest nowa w programie SQL Server 2008 (10.0.x), ułatwia niezawodne wykonywanie obciążeń przyrostowych w magazynie danych. Zamiast używać sparametryzowanych przekształceń OLE DB Command do wykonywania operacji wstawiania i aktualizacji, można użyć instrukcji MERGE, aby połączyć obie operacje.
Aby uzyskać więcej informacji, zobacz Stosowanie zmian do miejsca docelowego.
MERGE w innych scenariuszach
W poniższych scenariuszach można użyć instrukcji MERGE poza pakietem usług Integration Services lub wewnątrz niego. Jednak pakiet usług Integration Services jest często wymagany do załadowania tych danych z wielu heterogenicznych źródeł, a następnie do łączenia i czyszczenia danych. W związku z tym możesz rozważyć użycie instrukcji MERGE w pakiecie, aby ułatwić konserwację.
Śledzenie nawyków zakupu
Tabela FactBuyingHabits w magazynie danych śledzi ostatnią datę, w której klient kupił dany produkt. Tabela składa się z kolumn ProductID, CustomerID i PurchaseDate. Co tydzień transakcyjna baza danych generuje tabelę PurchaseRecords zawierającą zakupy dokonane w tym tygodniu. Celem jest użycie pojedynczej MERGE instrukcji w celu scalenia informacji w tabeli PurchaseRecords z tabelą FactBuyingHabits. Dla par produkt–klient, które nie istnieją, instrukcja MERGE wstawia nowe wiersze. Dla istniejących par produkt–klient instrukcja MERGE aktualizuje datę ostatniego zakupu.
Śledzenie historii cen
Tabela DimBook reprezentuje listę książek w spisie sprzedawcy książek i identyfikuje historię cen każdej książki. Ta tabela zawiera następujące kolumny: ISBN, ProductID, Price, Shelf i IsCurrent. Ta tabela zawiera również jeden wiersz dla każdej ceny, jaką książka miała. Jeden z tych wierszy zawiera bieżącą cenę. Aby wskazać, który wiersz zawiera bieżącą cenę, wartość kolumny IsCurrent dla tego wiersza jest ustawiona na 1.
Co tydzień baza danych generuje tabelę WeeklyChanges zawierającą zmiany cen dla tygodnia i nowych książek, które zostały dodane w ciągu tygodnia. Za pomocą pojedynczej MERGE instrukcji można zastosować zmiany w tabeli WeeklyChanges do tabeli DimBook. Instrukcja MERGE wstawia nowe wiersze dla nowo dodanych książek i aktualizuje kolumnę IsCurrent do wartości 0 dla wierszy istniejących książek, których ceny uległy zmianie. Instrukcja MERGE wstawia również nowe wiersze dla książek, których ceny uległy zmianie, a dla tych nowych wierszy ustawia wartość kolumny IsCurrent na 1.
Połącz tabelę z nowymi danymi względem starej tabeli
Baza danych modeluje właściwości obiektu przy użyciu "otwartego schematu", czyli tabela zawiera pary klucz-wartość dla każdej właściwości. Tabela Właściwości zawiera trzy kolumny: EntityID, PropertyID i Value. Tabela NewProperties, która jest nowszą wersją tabeli, musi zostać zsynchronizowana z tabelą Właściwości. Aby zsynchronizować te dwie tabele, można użyć jednej MERGE instrukcji do wykonywania następujących operacji:
Usuń właściwości z tabeli Właściwości, jeśli są nieobecne w tabeli NewProperties.
Zaktualizuj wartości właściwości, które znajdują się w tabeli Właściwości, przy użyciu nowych wartości znalezionych w tabeli NewProperties.
Wstaw nowe właściwości dla właściwości, które znajdują się w tabeli NewProperties, ale nie znajdują się w tabeli Properties.
Takie podejście jest przydatne w scenariuszach przypominających scenariusze replikacji, w których celem jest przechowywanie danych w dwóch tabelach na dwóch serwerach zsynchronizowanych.
Śledzenie inwentarza
Baza danych Inventory zawiera tabelę ProductsInventory zawierającą kolumny ProductID i StockOnHand. Tabela Wysyłki z kolumnami ProductID, CustomerID i Quantity śledzi przesyłki produktów klientom. Tabela ProductInventory musi być codziennie aktualizowana na podstawie informacji w tabeli Przesyłki. Pojedyncza instrukcja MERGE może zmniejszyć stan magazynowy w tabeli ProductInventory na podstawie zrealizowanych wysyłek. Jeśli spis produktu został zmniejszony do 0, instrukcja ta MERGE może również usunąć ten wiersz produktu z tabeli ProductInventory.