Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
SSIS Integration Runtime in Azure Data Factory
In der aktuellen Version von SQL Server Integration Services kann die SQL-Anweisung in einer Execute SQL-Aufgabe eine MERGE Anweisung enthalten. Mit dieser MERGE Anweisung können Sie mehrere INSERT, und UPDATEDELETE Vorgänge in einer einzelnen Anweisung ausführen.
Führen Sie die folgenden Schritte aus, um die MERGE Anweisung in einem Paket zu verwenden:
Erstellen Sie einen Datenflusstask, der die Quelldaten in eine temporäre oder Stagingtabelle lädt, transformiert und speichert.
Erstellen Sie eine Execute SQL-Aufgabe, die die MERGE Anweisung enthält.
Verbinden Sie den Task „Datenfluss“ mit dem Task „SQL ausführen“, und verwenden Sie die Daten in der Staging-Tabelle als Eingabe für die Anweisung MERGE.
Hinweis
Obwohl in diesem Szenario eine MERGE Anweisung in der Regel eine Stagingtabelle erfordert, ist die Leistung der MERGE Anweisung in der Regel besser als die der zeilenweisen Suche, die von der Lookup-Transformation ausgeführt wird. MERGE ist auch nützlich, wenn die Größe einer Nachschlagetabelle den für die Lookup-Transformation zum Zwischenspeichern ihrer Referenztabelle verfügbaren Speicher an seine Grenzen bringt.
Verwenden von MERGE
In der Regel verwenden Sie die MERGE Anweisung, wenn Sie Änderungen anwenden möchten, die Einfügungen, Aktualisierungen und Löschungen aus einer Tabelle auf eine andere Tabelle enthalten. Vor SQL Server 2008 (10.0.x) erforderte dieser Prozess sowohl eine Transformation für Lookups als auch mehrere Transformationen für OLE DB-Befehle. Die Transformation für Suche hat eine zeilenweise Suche ausgeführt, um zu bestimmen, ob jede Zeile neu war oder geändert wurde. Die OLE DB-Befehlstransformationen haben dann die erforderlichen INSERT, UPDATEund DELETE Vorgänge ausgeführt. Ab SQL Server 2008 (10.0.x) kann eine einzelne MERGE Anweisung sowohl die Nachschlagetransformation als auch die entsprechenden OLE DB-Befehlstransformationen ersetzen.
MERGE mit schrittweiser Last
Die neue Change Data Capture-Funktion in SQL Server 2008 (10.0.x) erleichtert es, inkrementelle Ladevorgänge in ein Data Warehouse zuverlässig auszuführen. Alternativ zur Verwendung parametrisierter OLE DB-Befehlstransformationen zum Ausführen der Einfügungen und Aktualisierungen können Sie die MERGE Anweisung verwenden, um beide Vorgänge zu kombinieren.
Weitere Informationen finden Sie unter Anwenden der Änderungen auf das Ziel.
MERGE in anderen Szenarien
In den folgenden Szenarien können Sie die MERGE Anweisung entweder außerhalb oder innerhalb eines Integration Services-Pakets verwenden. Häufig ist jedoch ein Integration Services -Paket erforderlich, um diese Daten aus mehreren heterogenen Quellen zu laden und sie anschließend zu kombinieren und zu bereinigen. Daher könnten Sie erwägen, die MERGE Anweisung in einem Paket zu verwenden, um den Komfort und die Wartungsfreundlichkeit zu erhöhen.
Nachverfolgen von Kaufgewohnheiten
Die FactBuyingHabits-Tabelle im Data Warehouse erfasst das letzte Datum, an dem ein Kunde ein bestimmtes Produkt gekauft hat. Die Tabelle besteht aus den Spalten ProductID, CustomerID und PurchaseDate. Jede Woche generiert die Transaktionsdatenbank eine PurchaseRecords-Tabelle, in der die während dieser Woche getätigten Käufe enthalten sind. Ziel ist es, eine einzelne MERGE Anweisung zum Zusammenführen der Informationen in der Tabelle "PurchaseRecords" in die Tabelle "FactBuyingHabits" zu verwenden. Bei Produktkundenpaaren, die nicht vorhanden sind, fügt die MERGE Anweisung neue Zeilen ein. Bei Produktkundenpaaren, die vorhanden sind, aktualisiert die MERGE Anweisung das neueste Kaufdatum.
Nachverfolgen der Preisentwicklung
Die DimBook-Tabelle repräsentiert die Liste der Bücher im Bestand eines Buchhändlers und identifiziert die Preisentwicklung für jedes Buch. Diese Tabelle enthält folgende Spalten: ISBN, ProductID, Price, Shelf und IsCurrent. Außerdem enthält die Tabelle eine Zeile für jeden Preis, den das Buch je hatte. Eine dieser Zeilen enthält den aktuellen Preis. Um anzugeben, welche Zeile den aktuellen Preis enthält, wird der Wert der "IsCurrent"-Spalte für diese Zeile auf 1 gesetzt.
Jede Woche generiert die Datenbank eine WeeklyChanges-Tabelle, in der Preisänderungen und neue Bücher, die während der Woche in den Bestand aufgenommen wurden, enthalten sind. Mithilfe einer einzelnen MERGE Anweisung können Sie die Änderungen in der Tabelle "WeeklyChanges" auf die Tabelle "DimBook" anwenden. Die MERGE Anweisung fügt neue Zeilen für neu hinzugefügte Bücher ein und aktualisiert die Spalte IsCurrent für Zeilen vorhandener Bücher, deren Preise geändert wurden, auf 0. Die MERGE Anweisung fügt auch neue Zeilen für Bücher ein, deren Preise geändert wurden, und legt für diese neuen Zeilen den Wert der Spalte IsCurrent auf 1 fest.
Eine Tabelle mit neuen Daten mit der alten Tabelle zusammenführen
Die Datenbank formt die Eigenschaften eines Objekts mit einem „offenen Schema“, das heißt, eine Tabelle enthält Name/Wert-Paare für jede Eigenschaft. Die Properties-Tabelle enthält drei Spalten: EntityID, PropertyID und Value. Eine NewProperties-Tabelle, bei der es sich um eine neuere Version der Tabelle handelt, muss mit der Properties-Tabelle synchronisiert werden. Zum Synchronisieren dieser beiden Tabellen können Sie eine einzelne MERGE Anweisung verwenden, um die folgenden Vorgänge auszuführen:
Löschen Sie Eigenschaften aus der Properties-Tabelle, wenn sie in der NewProperties-Tabelle fehlen.
Aktualisieren Sie Werte für Eigenschaften in der Properties-Tabelle mit neuen Werten aus der NewProperties-Tabelle.
Fügen Sie neue Eigenschaften für Eigenschaften hinzu, die in der NewProperties-Tabelle vorhanden sind, jedoch in der Properties-Tabelle fehlen.
Dieser Ansatz ist in Szenarios nützlich, die Replikationsszenarios ähneln, deren Ziel darin besteht, Daten in zwei Tabellen auf zwei Servern synchronisiert zu halten.
Bestandsnachverfolgung
Die Inventory-Datenbank umfasst eine ProductsInventory-Tabelle mit den Spalten ProductID und StockOnHand. In einer Shipments-Tabelle mit den Spalten ProductID, CustomerID und Quantity werden Produktlieferungen an Kunden verfolgt. Die ProductInventory-Tabelle muss täglich auf Basis der Informationen der Shipments-Tabelle aktualisiert werden. Eine einzelne MERGE Erklärung kann den Bestand in der Tabelle "ProductInventory" basierend auf den durchgeführten Lieferungen reduzieren. Wenn der Bestand für ein Produkt auf 0 reduziert wurde, kann diese MERGE Anweisung diese Produktzeile auch aus der Tabelle "ProductInventory" löschen.