IDifferencer.CompareGraphs(Object, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Vergleicht zwei Diagramme (definiert unten) und gibt die Differenz zurück.
Das Ergebnis von CompareGraphs stellt den Unterschied dar, der auf das Ziel angewendet werden soll, um die Quelle abzurufen. (d. h. target + diff => source)
Um SMO und SFC zu unterstützen, bleiben die Eingaben als Objekttyp erhalten. Es lässt jedoch nur SqlSmoObject oder SfcObject zu. Diese Methode löst InvalidArgumentException aus, wenn der Typ der angegebenen Objekte ungültig ist.
Zwei Diagramme sind vergleichbar (d. h. haben denselben Typ), wenn sie dieselbe Struktur auf allen Ebenen haben, was bedeutet, dass jeder Knoten denselben Typ von untergeordneten Elementen und Eigenschaften aufweist. Wenn die angegebenen Diagramme nicht vergleichbar sind, löst diese Methode InvalidArgumentException aus.
Wenn ein Knoten auf jedem Diagramm dieselbe Identität hat (dargestellt durch Urn in SMO und SFC), wird es als identisch bezeichnet. Wenn zwei identische Knoten die gleichen Werte für alle Eigenschaften aufweisen, werden sie als gleichwertig bezeichnet (ignorieren Sie die untergeordneten Elemente).
Während des Vergleichs überprüft dieser Dienst alle relevanten Knoten. (Die Relevanz von Knoten und Eigenschaften ist domänenspezifisch.) Für jedes Paar identischer Knoten von beiden Seiten vergleicht der Dienst alle relevent-Eigenschaften. Wenn die Knoten nicht gleichwertig sind, wird dem Ergebnis ein DiffEntry mit DiffType.Updated hinzugefügt. Die Kinder werden dann verglichen.
Wenn ein untergeordnetes Element in der Quelle, aber nicht im Ziel angezeigt wird, wird dem Ergebnis ein DiffEntry mit DiffType.Created hinzugefügt, ebenso für DiffType.Deleted.
Der Unterschied führt die untergeordneten Elemente (aller Ebenen) eines Knotens "Erstellt" oder "Gelöscht" durch. Die untergeordneten Einträge sind im Ergebnis enthalten.
Schließlich wird jedes Paar identischer Kinder auf Äquivalenz überprüft.
CompareGraphs() skaliert auf sehr große Diagramme und behält die gesamten Diagramme möglichst nicht im Arbeitsspeicher bei. Anwendungen, die diesen Dienst verwenden, sollten keine Logik haben, die von der Reihenfolge der Ergebnisse abhängt, die möglicherweise unterschiedlich sein können, wenn sich die Implementierung in Zukunft zur weiteren Optimierung ändert.
Die aktuelle Implementierung führt die Struktur in spät aktivierter Weise durch. Das Zurücksetzen des Ergebnisses "IEnumerator" kann dazu führen, dass die Diagramme erneut durchlaufen werden.
Das Ergebnis IDiffgram ist nicht threadsicher.
public Microsoft.SqlServer.Management.Sdk.Differencing.IDiffgram CompareGraphs(object source, object target);
abstract member CompareGraphs : obj * obj -> Microsoft.SqlServer.Management.Sdk.Differencing.IDiffgram
Public Function CompareGraphs (source As Object, target As Object) As IDiffgram
Parameter
- source
- Object
Der Stammknoten des zu vergleichenden Quelldiagramms.
- target
- Object
Der Stammknoten des zu vergleichenden Zieldiagramms.