Freigeben über


Importieren von Daten aus Configuration Manager in Service Manager

Wichtig

Diese Version von Service Manager hat das Ende des Supports erreicht. Es wird empfohlen, ein Upgrade auf Service Manager 2022 durchzuführen.

In diesem Artikel wird beschrieben, wie ein Configuration Manager-Connector erstellt, konfiguriert, deaktiviert und aktiviert wird und wie die erweiterte Configuration Manager-Datei SMS_def.mof für das Sammeln von Hardwareinformationen angepasst werden kann. Sie verwenden den Connector, um Daten aus Configuration Manager in Service Manager zu importieren.

Der Connector für Configuration Manager erkennt Affinität zwischen Benutzer und Gerät und mobilen Geräten und synchronisiert sie in der Service Manager Datenbank.

Sie können Daten aus der Configuration Manager-Standortdatenbank in die Service Manager-Datenbank importieren. Dadurch werden automatisch Konfigurationselemente für die Hardware und Software erstellt und ausgefüllt, die Sie in Service Manager verwalten möchten. Nachdem Sie Daten aus Configuration Manager importiert haben, können Sie die entsprechenden Konfigurationselemente an die entsprechenden Vorfälle anhängen, und die Informationen in den Konfigurationselementen stehen den am Vorfall arbeitenden Analysten zur Verfügung.

Mithilfe eines Configuration Manager Connectors können Sie Konfigurations-Baselines aus Configuration Manager importieren und diese Konfigurations-Baselines dann verwenden, um automatisch Vorfälle für nicht konforme Konfigurationselemente zu erzeugen.

Informationen zur Implementierung von Änderungen und Konfigurationen in Microsoft Operations Framework (MOF) finden Sie unter Position der Änderungs- und Konfigurations-SMF innerhalb des MOF IT Service Lifecycle.

Abschließen des Data Warehouse-Registrierungsprozesses

Bevor Sie den Configuration Manager-Connector erstellen, müssen Sie sicherstellen, dass der Data Warehouse Registrierungsprozess abgeschlossen ist.

Zusätzliche Daten in Configuration Manager

Zu den zusätzlichen Daten im Configuration Manager gehören Daten zur Affinität zwischen Benutzer und Gerät (UDA, User-Device Affinity), zu mobilen Geräten und zu Softwareanforderungen. Mit UDA-Daten aus Configuration Manager wird genauer angegeben, wer der primäre Benutzer eines Computers oder Geräts ist. Die vom Service Manager Configuration Manager Connector gesammelten UDA-Daten werden verwendet, um die Informationen UsesComputer und PrimaryUser in der Service Manager-Datenbank aufzufüllen.

Mobile Gerätedaten für Windows Phones, Windows Mobiltelefone und Nokia-Geräte werden über den Service Manager Configuration Manager Connector gesammelt. Daten von anderen mobilen Geräten wie iPhone, BlackBerry und Android-basierten Telefonen werden gesammelt, wenn Sie den Configuration Manager Exchange Server-Connector verwenden. Die Daten der mobilen Geräte werden als Konfigurationselemente in die Service Manager-Datenbank importiert und können mit Arbeitselementen, dem Vorfall-Management und dem Change Management verknüpft werden.

Die Daten der Softwareanforderungen werden zur Unterstützung der Integration von Self-Service-Softwareanforderungen in Configuration Manager verwendet. Mit den Daten der administrativen Kategorie aus Configuration Manager werden die Service Request-Vorlagen ausgewählt, die beim Erstellen einer Anforderung über das Self-Service-Portal verwendet werden sollen.

Zeitplan

Sie können den Configuration Manager-Connector für ein Update der Service Manager-Datenbank nach einem sich wiederholenden Zeitplan konfigurieren. Zudem ist es möglich, den Import von Daten aus Configuration Manager zeitweilig anzuhalten, indem Sie den Connector deaktivieren. Sie können den Connector beispielsweise deaktivieren, wenn auf der Configuration Manager-Standortdatenbank Wartungsarbeiten ausgeführt werden, da Sie wissen, dass bei Wartungsarbeiten temporär fehlerhafte Daten entstehen. Wenn es angebracht ist, können Sie den Connector wieder aktivieren und den Import von Daten fortsetzen.

Erweitertes Hardwareinventar mit Configuration Manager

Im Configuration Manager kann das Hardwareinventar erweitert werden, indem ein Inventar erstellt wird, das zusätzliche WMI-Klassen (Windows Management Instrumentation), WMI-Klassenattributen, Registrierungsschlüsseln und anderen Anpassungen zur Erfüllung Ihrer Unternehmensanforderungen enthält. Weitere Informationen zum Erweitern des Hardwareinventars in Configuration Manager finden Sie unter Erweitern der Hardwareinventur.

Wenn Sie den Hardwarebestand in Configuration Manager erweitert haben, müssen Sie ein neues Configuration Manager Connector-Management Pack in Service Manager erstellen, um den erweiterten Hardwarebestand zu erfassen. Dieses neue Management Pack kann entweder nur die erforderlichen Informationen für das Sammeln des erweiterten Hardwareinventars aus Configuration Manager enthalten, oder es kann alles aus dem ursprünglichen Configuration Manager Connector Management Pack enthalten, zusätzlich zu dem neuen erweiterten Hardwareinventar. Informationen zum Erstellen eines neuen Connector-Management Packs finden Sie unter Konfigurieren eines Configuration Manager Connectors für eine erweiterte SMS_def.mof-Datei.

Importieren von Softwarekonfigurationselementen

Sie können Softwarekonfigurationselemente mit dem Configuration Manager Connector importieren, indem Sie die folgenden Asset Intelligence-Berichtsklassen in Configuration Manager importieren. Diese Klassen sollten in Configuration Manager aktiviert werden, bevor Sie den Configuration Manager Connector in Service Manager konfigurieren. Weitere Informationen zum Aktivieren von Asset Intelligence in Configuration Manager finden Sie unter Aktivieren von Asset Intelligence.

  • SMS_InstalledSoftware

  • SMS_SystemConsoleUsage

  • SMS_SystemConsoleUser

  • SoftwareLicensingService

  • SoftwareLicensingProduct

Wenn die Software für einen bestimmten Computer nicht in der Ansicht Alle Software im Arbeitsbereich Konfigurationselemente angezeigt wird, sollten Sie das Operations Manager-Ereignisprotokoll auf dem Service Manager primären Verwaltungsserver überprüfen. Suchen Sie nach Ereignissen mit der Quelle „OpsMgr Connector“ und „Lfx Service“, um festzustellen, ob Fehler aufgetreten sind.

Einen Configuration Manager-Connector erstellen

Mit den folgenden Verfahren können Sie einen Connector erstellen, um Daten aus Configuration Manager in System Center zu importieren – Service Manager und die status des Connectors zu bestätigen.

Wichtig

Bevor Sie den Configuration Manager-Connector erstellen können, müssen Sie überprüfen, ob Configuration Manager in Ihrer Umgebung installiert ist, und Sie müssen die Windows-Benutzerkontensteuerung (UAC) aktivieren. Weitere Informationen zur Benutzerkontensteuerung finden Sie unter Benutzerkontensteuerung.

So erstellen Sie einen Configuration Manager-Connector

  1. Wählen Sie in der Service Manager Konsole die Option Verwaltung aus.
  2. Erweitern Sie im Bereich Verwaltungden Eintrag Verwaltung, und wählen Sie Connectors aus.
  3. Wählen Sie im Bereich Aufgaben unter Connectors die Option Connector erstellen und dann Configuration Manager Connector aus. Der Configuration Manager Connector-Assistent wird gestartet.
  4. Wählen Sie auf der Seite Vorbereitung die Option Weiter.
  5. Gehen Sie auf der Seite Allgemein folgendermaßen vor:
    1. Geben Sie im Feld Name einen Namen für den neuen Connector ein. Geben Sie beispielsweise Configuration Manager Connector für Seattle ein.
    2. Geben Sie im Feld Beschreibung eine Beschreibung für den neuen Connector ein. Geben Sie z. B. A Configuration Manager Connector zum Standort Seattle ein.
    3. Stellen Sie sicher, dass das Kontrollkästchen Aktiviert aktiviert ist, und wählen Sie Weiter aus.
  1. Wählen Sie auf der Seite Management Pack auswählen in der Liste Management Pack auswählen entweder System Center Configuration Manager Connectorkonfiguration oder System Center Configuration Manager 2012-Connectorkonfiguration aus, und wählen Sie Dann Weiter aus.
  1. Wählen Sie auf der Seite Management Pack auswählen in der Liste Management Pack die Option System Center Configuration Manager Connectorkonfiguration aus, und wählen Sie Dann Weiter aus.
  1. Führen Sie auf der Seite Mit System Center Configuration Manager-Datenbank verbinden folgenden Schritt aus:

    1. Geben Sie im Feld Datenbankservername den Servernamen des Servers ein, auf dem die Configuration Manager Standortdatenbank gehostet wird, und ggf. die Datenbank mit dem Namen instance. Beispielsweise können Sie bei der hypothetischen Woodgrove Bank woodgrove\instance1 eingeben, wenn sich die Configuration Manager Datenbank auf einem benannten instance von Microsoft SQL Server befindet, oder woodgrove eingeben, wenn sich die Datenbank auf einer Standard-instance der SQL Server befindet.
    2. Geben Sie im Feld Datenbankname den Namen der Configuration Manager Standortdatenbank ein. Geben Sie beispielsweise SMS_CM1 ein.
    3. Wählen Sie im Bereich Anmeldeinformationen ein ausführenes Konto aus, oder erstellen Sie ein neues ausführenes Konto. Das ausführende Konto muss Mitglied der Gruppen „smsdbrole_extract“ und „db_datareader“ für die Configuration Manager-Standortdatenbank sein.
    4. Wählen Sie im Bereich Anmeldeinformationen die Option Verbindung testen aus.
    5. Geben Sie im Dialogfeld Anmeldeinformationen im Feld Kennwort das Kennwort für das Konto ein, und wählen Sie OK aus.
    6. Wenn Sie im Dialogfeld Verbindung testen die folgende Bestätigungsmeldung erhalten, wählen Sie OK: Die Verbindung mit dem Server war erfolgreich.
    7. Wählen Sie Weiter aus.
  2. Wählen Sie auf der Seite Sammlungen die entsprechende Sammlung aus, und wählen Sie dann Weiter aus.

  3. Legen Sie auf der Seite Zeitplan in der Liste Synchronisieren die Häufigkeit und Uhrzeit der Synchronisierung fest, und wählen Sie Weiter aus.

  4. Bestätigen Sie auf der Seite Zusammenfassung die Von Ihnen vorgenommenen Connectoreinstellungen, und wählen Sie Erstellen aus.

  5. Stellen Sie auf der Seite Bestätigung sicher, dass Sie die folgende Bestätigungsmeldung erhalten: Sie haben den System Center Configuration Manager Connector-Assistenten erfolgreich abgeschlossen. Wählen Sie dann Schließen aus.

    Hinweis

    Der System Center Configuration Manager Connector-Assistent kann mehrere Stunden dauern, um Daten aus Configuration Manager zu importieren.

So überprüfen Sie die Erstellung eines Configuration Manager-Connectors

  1. Prüfen Sie, ob der erstellte Configuration Manager-Connector im Bereich Connectors angezeigt wird.
  2. Wählen Sie in der Service Manager Konsole Konfigurationselemente aus. Erweitern Sie im Bereich Konfigurationselementeden Eintrag Konfigurationselemente, erweitern Sie Computer, und wählen Sie Alle Windows-Computer aus. Vergewissern Sie sich, dass die beabsichtigten Computer im Bereich Alle Windows-Computer angezeigt werden.
  3. Klicken Sie im mittleren Bereich auf einen neu importierten Computer. Prüfen Sie, ob die richtigen Computerdaten im Computerformular angezeigt werden.

So überprüfen Sie den Status eines Configuration Manager-Connectors

  • Überprüfen Sie die Spalten im Bereich Connector . Diese enthalten den Beginn- und Abschlusszeitpunkt, den Status und die Fertigstellung in Prozent.

PowerShell-SymbolSie können einen Windows PowerShell-Befehl verwenden, um einen neuen Configuration Manager-Connector zu erstellen. Informationen zur Verwendung von Windows PowerShell zum Erstellen eines neuen Configuration Manager-Connectors in Service Manager finden Sie unter New-SCCMConnector.

Deaktivieren und Aktivieren eines Configuration Manager-Connectors

Sie können die folgenden Verfahren verwenden, um einen Configuration Manager-Connector zu deaktivieren oder zu aktivieren und die status der Änderung zu überprüfen.

So deaktivieren Sie einen Configuration Manager-Connector

  1. Wählen Sie in der Service Manager Konsole die Option Verwaltung aus.

  2. Erweitern Sie im Bereich Verwaltungden Eintrag Verwaltung, und wählen Sie Connectors aus.

  3. Wählen Sie im Bereich Connectors den Configuration Manager Connector aus, den Sie deaktivieren möchten. Wählen Sie beispielsweise Configuration Manager Connector zu SEA aus.

  4. Wählen Sie im Bereich Aufgaben unter dem Connectornamen die Option Deaktivieren aus.

    Hinweis

    Wenn Sie einen Connector während der Synchronisierung von Daten deaktivieren, wird der Synchronisierungsprozess möglicherweise nicht beendet. Ein deaktivierter Connector importiert jedoch ab diesem Zeitpunkt keine neuen Daten aus einer Configuration Manager Datenbank.

So aktivieren Sie einen Configuration Manager-Connector

  1. Wählen Sie in der Service Manager Konsole die Option Verwaltung aus.
  2. Erweitern Sie im Bereich Verwaltungden Eintrag Verwaltung, und wählen Sie Connectors aus.
  3. Wählen Sie im Bereich Connectors den Configuration Manager Connector aus, den Sie aktivieren möchten. Wählen Sie beispielsweise Configuration Manager Connector zu SEA aus.
  4. Wählen Sie im Bereich Aufgaben unter dem Connectornamen die Option Aktivieren aus.

So überprüfen Sie den Statuswechsel eines Configuration Manager-Connectors

  1. Nachdem Sie den Connector deaktiviert oder aktiviert haben, warten Sie 30 Sekunden. Wählen Sie dann in der Service Manager Konsole die Option Verwaltung und dann Connectors aus.
  2. Suchen Sie im Bereich Connectors nach dem Connector, für den Sie status geändert haben, und überprüfen Sie den Wert in der Spalte Aktiviert.
  3. Wenn Sie den Connector aktiviert haben, prüfen Sie, ob er die Synchronisierung zeitplangemäß wiederaufnimmt. Wenn Sie den Connector deaktiviert haben, prüfen Sie, ob die zeitplangemäße Synchronisierung ausgesetzt wurde.

Screenshot des PowerShell-SymbolsSie können Windows PowerShell Befehle verwenden, um diese Aufgaben und andere verwandte Aufgaben wie folgt auszuführen:

  • Informationen darüber, wie Sie Windows PowerShell zum Starten eines Service Manager-Connectors verwenden, finden Sie unter Start-SCSMConnector.
  • Weitere Informationen dazu, wie Sie mit Windows PowerShell in Service Manager definierte Connectors abrufen und deren Status anzeigen können, finden Sie unter Get-SCSMConnector.
  • Informationen zur Verwendung von Windows PowerShell zum Aktualisieren der Eigenschaften eines Service Manager-Connectors finden Sie unter Update-SCSMConnector.

Einen Configuration Manager-Connector synchronisieren

Um sicherzustellen, dass die Service Manager Datenbank auf dem neuesten Stand ist, wird der System Center-Configuration Manager-Connector jeden Tag nach der ersten Synchronisierung mit Configuration Manager synchronisiert. Sie können jedoch die folgenden Verfahren verwenden, um den Connector manuell zu synchronisieren und zu überprüfen, ob der Connector synchronisiert wurde.

So synchronisieren Sie manuell einen Configuration Manager-Connector

  1. Wählen Sie in der Service Manager Konsole die Option Verwaltung aus.

  2. Erweitern Sie im Bereich Verwaltungden Eintrag Verwaltung, und wählen Sie Connectors aus.

  3. Wählen Sie im Bereich Connectors den Configuration Manager Connector aus, den Sie synchronisieren möchten.

  4. Wählen Sie im Bereich Aufgaben unter dem Namen des Connectors die Option Jetzt synchronisieren aus.

    Hinweis

    Der Importvorgang kann je nach Datenmenge länger dauern.

So überprüfen Sie die Synchronisierung eines Configuration Manager-Connectors

  1. Wählen Sie in der Service Manager Konsole Konfigurationselemente aus.
  2. Erweitern Sie im Bereich Konfigurationselementeden Eintrag Computer, und wählen Sie Alle Windows-Computer aus. Stellen Sie sicher, dass im mittleren Bereich alle in Configuration Manager neu hinzugefügten Computer erscheinen.

Konfigurieren eines Configuration Manager-Connectors für eine erweiterte SMS_def.mof-Datei

Service Manager Hardwareinventur erfasst und stellt dann Systeminformationen wie verfügbaren Speicherplatz, Prozessortyp und Betriebssystem zu jedem Computer in der Configuration Manager-Hierarchie bereit. In Configuration Manager können Benutzer die Standarddatei SMS_def.mof von Configuration Manager anpassen, um die erfassten Daten im Hardwareinventar zu erweitern.

Wenn Sie einen Configuration Manager Connector im Service Manager erstellen, können Sie das Connector Configuration Management Pack im System Center Configuration Manager auswählen, das für diesen Connector genutzt werden muss. Wenn Sie das Standard-Management Pack verwenden, werden über den Connector Hardware-, Software- und DCM-Informationen für die Computer im System importiert.

Wenn die Datei SMS_def.mof von Configuration Manager erweitert wurde, um zusätzliche Daten des Hardwareinventars zu erfassen, die Sie auch in Service Manager importieren möchten, müssen Sie ein neues benutzerdefiniertes Management Pack erstellen, das diese zusätzlichen Daten definiert. Anschließend müssen Sie einen neuen Configuration Manager Connector erstellen und für die Verwendung des neuen benutzerdefinierten Management Packs konfigurieren.

Importieren erweiterter Hardwareinventurdaten aus Configuration Manager

Zum Importieren erweiterter Hardwareinventurdaten aus Configuration Manager müssen Sie ein benutzerdefiniertes Configuration Manager Connector-Management Pack erstellen. Es stehen zwei Ansätze für die Implementierung eines benutzerdefinierten Configuration Manager-Connectors zur Verfügung:

  • Erstellen Sie ein benutzerdefiniertes Configuration Manager-Connector-Management Pack, in dem die erweiterten Daten, die Sie importieren möchten, definiert werden, und erstellen Sie dann zwei Connectors. Konfigurieren Sie einen Connector so, dass das System Center Configuration Manager-Standard-Management Pack für die Connectorkonfiguration verwendet wird, um die standardmäßig definierten Daten zu importieren. Konfigurieren Sie den zweiten Connector für die Nutzung des benutzerdefinierten Management Packs, um zusätzlich die erweiterten Daten zu importieren.

  • Passen Sie das System Center Configuration Manager-Standard-Management Pack für die Connectorkonfiguration so an, dass auch die zusätzlichen erweiterten Daten eingeschlossen werden. Erstellen Sie einen einzelnen Connector, der für die Nutzung des angepassten Management Packs konfiguriert wurde, um alle erforderlichen Daten zu importieren.

Dieser Artikel enthält die Informationen, die Sie benötigen, um den zuvor beschriebenen ersten Ansatz zu implementieren. Hier werden die notwendigen Einzelheiten für die Entwicklung eines benutzerdefinierten Configuration Manager Connector Management Packs für den Import des erweiterten Hardwareinventars aus dem Configuration Manager beschrieben.

Allgemeine Schritte für den Import erweiteter Hardwareinventurdaten:

  1. Erstellen Sie ein benutzerdefiniertes Configuration Manager-Management Pack für die Connectorkonfiguration mit den Definitionen für die erweiterten Daten.
  2. Importieren Sie das benutzerdefinierte Management Pack in den Service Manager. Nachdem Sie das Management Pack importiert haben, verarbeitet Service Manager die Anweisungen im Management Pack, um Staging-Tabellen zu erstellen und alle im Management Pack definierten SQL-Skripte (Structured Query Language) auszuführen.
  3. Erstellen Sie einen Configuration Manager-Connector, und konfigurieren Sie diesen für die Verwendung des benutzerdefinierten Management Packs.
  4. Mithilfe des Configuration Manager-Connectors werden die Daten importiert.

Arbeiten mit einem benutzerdefinierten Configuration Manager Connector-Management Pack

Beachten Sie die folgenden Tipps, wenn Sie mit einem benutzerdefinierten Configuration Manager Connector-Management Pack arbeiten:

  • Semantische Fehler in den Connectorkonfigurationsvorlagen im Management Pack verhindern nicht, dass das Management Pack importiert wird, und sie werden im Ereignisprotokoll protokolliert. In diesem Fall müssen Sie das Management Pack löschen, die Fehler korrigieren und es danach erneut importieren.

  • Nach dem Erstellen eines Configuration Manager-Connectors können Sie die Management Pack-Auswahl nicht mehr ändern. Stattdessen müssen Sie den Connector löschen und anschließend einen neuen mit der gewünschten Management-Pack-Auswahl erstellen.

  • Um das erfolgreiche Löschen eines Management Packs zu gewährleisten, müssen Sie zuerst alle Connectors löschen, die zur Verwendung des Management Packs konfiguriert wurden. Anschließend löschen Sie das Management Pack.

    Wenn Sie ein benutzerdefiniertes Configuration Manager Connector-Management Pack löschen, versucht Service Manager, alle zugehörigen Stagingtabellen zu löschen, die während des Management Packs-Import erstellt wurden. Anschließend führt Service Manager alle Skripts aus, die im Abschnitt Deinstallieren des Management Packs definiert sind.

  • Im Gegensatz zu anderen Management Packs kann das benutzerdefinierte Configuration Manager Connector-Management Pack nicht versioniert werden. Der Import einer höheren Version des Management Packs wird erfolgreich ausgeführt. Die Connectorkonfiguration im Management Pack wird jedoch ignoriert, oder es treten Validierungsfehler auf, die im Ereignisprotokoll aufgezeichnet werden.

Erstellen eines benutzerdefinierten Configuration Manager Connector Configuration Management Packs

Die Struktur eines benutzerdefinierten Configurations Manager-Management Packs für die Connectorkonfiguration entspricht der eines standardisierten Configurations Manager-Connector-Management Packs. Die zwei Objektvorlagen DataProvider und DataConsumer , über die festgelegt wird, wie die Daten importiert und angewendet werden sollen, müssen vorhanden sein.

Abschnitt "DataProvider"

Der Abschnitt DataProvider enthält Informationen, z. B. die zu importierenden Daten, die Sie beim Importieren von Daten aus Configuration Manager in die Stagingtabellen von LinkingFramework benötigen. Der Abschnitt DataProvider enthält die Abfragen, die auf der Configuration Manager-Standortdatenbank ausgeführt werden, Anweisungen für die Erstellung von Stagingtabellen, benutzerdefinierte SQL-Skripts und Informationen, die für die inkrementelle Synchronisierung relevant sind, z. B. Wasserzeichen und Batchverarbeitung.

Abschnitt "DataConsumer"

Der Abschnitt DataConsumer enthält Informationen zum Lesen der Daten aus Stagingtabellen und zum Schreiben in den Instanzbereich der ServiceManager-Datenbank , z. B. Entitäten oder Beziehungen. Der Abschnitt DataConsumer enthält Abfragen, die für die Stagingtabellen ausgeführt werden. Zuordnung zum Service Manager Typsystem, benutzerdefinierte SQL-Skripts und Informationen, die für die inkrementelle Synchronisierung relevant sind, z. B. Wasserzeichen und Batchverarbeitung.

Struktur der Abschnitte DataProvider und DataConsumer-Objektvorlagen

Grundsätzlich handelt es sich bei DataProvider und DataConsumer um Objektvorlagen, die auf einen Projektionstyp gerichtet sind. Mit dem nachstehenden Code wird die allgemeine Struktur der Abschnitte DataProvider und DataConsumer aufgezeigt.

<TypeProjection ID="System.LinkingFramework.DataConnector.Projection" Accessibility="Public" Type="System.LinkingFramework.DataConnector">
          <Component Alias="DataTable" Path="$Context/Path[Relationship='System.LinkingFramework.ConnectorEmbedsTables' TypeConstraint='System.LinkingFramework.DataTable']$">
            <Component Alias="Field" Path="$Context/Path[Relationship='System.LinkingFramework.TableEmbedsFields']$" />
          </Component>
          <Component Alias="DataCollection" Path="$Context/Path[Relationship='System.LinkingFramework.ConnectorEmbedsCollections' TypeConstraint='System.LinkingFramework.DataCollection']$" />
 </TypeProjection>

In diesem Code werden DataTable, Fieldund DataCollection wie folgt definiert:

  • DataTable. Die kleinste Dateneinheit, die für die Datenübertragung definiert ist. Es ist eine Deklaration, welche Daten aus der externen Datenquelle abgerufen werden sollen. Zudem wird Folgendes definiert: Abhängigkeiten zwischen verschiedenen Datentabellen und wann die Datenbatchverarbeitung, die Grenzwertbestimmung und die Optimierung beendet sind.

  • Feld. Eine einzelne Spalte in einer Datentabelle.

  • DataCollection. Eine Reihe von Datentabellen, die in einem Datenübertragungsauftrag oder einer Sitzung übertragen werden sollen. Hier wird definiert, welche Datentabellen in diese Datensammlung eingeschlossen werden.

Eigenschaften im benutzerdefinierten Management Pack

In der nachstehenden Tabelle sind die Details zu den einzelnen Eigenschaften in dem benutzerdefinierten Configurations Manager-Management Pack für die Connectorkonfiguration aufgeführt. Halten Sie sich bei der Erstellung des benutzerdefinierten Management Packs an diese Richtlinien.

Eigenschaft Erwarteter Wert Validierung nach dem Import
ID Sowohl für DataProvider - als auch für DataConsumer-Vorlagen , wie im Beispiel angegeben Yes
DataConnector - Eigenschaften
DataConnectorName Sowohl für DataProvider - als auch für DataConsumer-Vorlagen – identisch mit den Werten im Beispiel Yes
IsProvider In der DataProvider-Vorlage – True

In der DataConsumer-Vorlage – False
Yes
SolutionName Kommentar. Hier kann beispielsweise der Typ der importierten Daten angezeigt werden. Beim Versuch, ein Management Pack zu importieren, in dem ein bereits verwendeter Lösungsname vorhanden ist, tritt ein Fehler auf, der im Ereignisprotokoll aufgezeichnet wird.
Entrypoint, EntryAssembly & WinformUIAssembly Identisch mit dem Wert aus dem Beispiel
Abschnitt „InstallSQLScripts“ SQL-Skripts, die nach der Einrichtung der Staging-Tabellen ausgeführt werden müssen. Sie werden normalerweise in der DataConsumer-Vorlage verwendet, um Ansichten zu konfigurieren, die Daten aus den Stagingtabellen anzeigen.

Alles, was zwischen den <Skript><-/Skripttags> eingeschlossen ist, wird als gültiges SQL-Skript erwartet. Daher müssen Sie für Kommentare anstelle der standardmäßigen XML-Kommentartags die /**/ Trennzeichen und mit mehreren Zeilenkommentar verwenden.
Keine Validierung. Verwenden Sie benutzerdefinierte Tabellennamen, um ein ungewolltes Überschreiben oder Ändern von Tabellen zu verhindern. Gilt nicht für die im Management Pack deklarierten Tabellen.
Abschnitt „UnInstallSQLScripts“ SQL-Skripts, die ausgeführt werden müssen, nachdem Sie das Configuration Manager Connector-Management Pack in der Service Manager-Konsole gelöscht haben.

Alles, was zwischen den <Skript><-/Skripttags> eingeschlossen ist, wird als gültiges SQL-Skript erwartet. Daher müssen Sie für Kommentare anstelle der standardmäßigen XML-Kommentartags die /**/ Trennzeichen und mit mehreren Zeilenkommentar verwenden.
Keine Validierung. Verwenden Sie benutzerdefinierte Tabellennamen, um ein ungewolltes Überschreiben oder Ändern von Tabellen zu verhindern. Gilt nicht für die im Management Pack deklarierten Tabellen.
DisableParallelProcessing True
DataTable - Eigenschaften
DataName Die Tabelle, aus der Daten importiert werden sollen. Es wird in der Benutzeroberfläche (UI) und nicht in Abfragen verwendet.
StageTableName Name der Stagingtabelle. Dieser Name muss eindeutig sein. Beim Versuch, ein Management Pack zu importieren, in dem ein bereits verwendeter Tabellenname vorhanden ist, tritt ein Fehler auf, der im Ereignisprotokoll aufgezeichnet wird.
WatermarkField Name der Spalte rowversion
WatermarkType Mögliche Werte:

- 0-Gibt dateTime-Typ an
- 1: Gibt den Zeitstempeltyp an
- (-1)-Gibt keine Wasserzeichen an. In diesem Fall wird WatermarkField optional
Andere Arten von Wasserzeichen werden nicht unterstützt.
BatchIdField Name einer Spalte mit geeigneter Selektivität, die beim Import in Stagingtabellen zum Aufteilen inkrementeller Daten in Batches verwendet wird
BatchIdType Mögliche Werte:

- 0-Int
- (-1)-Keine Batchverarbeitung, in diesem Fall wird BatchIdField optional
Integerspalte
BatchIdSize Größe des Batches, wenn die Batchverarbeitung genutzt wird. Mit einem hohen Wert wird angezeigt, dass große Datenmengen gleichzeitig gelesen oder geschrieben werden. Der empfohlene Wert ist 500. Integerspalte
UseCache True
GroomType Mögliche Werte:

- 1- Die Daten in Stagingtabellen können nach der Übertragung in die Service Manager Datenbank gepflegt werden.
- 2- Die Daten in Stagingtabellen werden erst gepflegt, nachdem sie in der Configuration Manager-Datenbank als gelöscht markiert wurden und aufgrund der Service Manager Connectorsynchronisierung auch in der Service Manager-Datenbank gelöscht wurden.
QueryString Die tatsächliche Abfrage, die Configuration Manager 2007 zum Abrufen der angeforderten Daten verwendet. Die Abfrage muss folgendem Format entsprechen:

SELECT ...

FROM ...

WHERE ...

ORDER BY ...

Die WHERE-Klausel kann das $COLLECTIONLIST Token enthalten. Während der Synchronisierung wird dieses Token durch die Sammlungen ersetzt, die im Connector-Assistent für System Center Configuration Manager angegeben werden.

Die Daten, die von Configuration Manager SCCM_Ext.*-Ansichten verfügbar gemacht werden, werden für den Import unterstützt. Durch die Verwendung von Standard-sms_def.mof-Erweiterungen oder von noidmif-Dateien können diese Daten erweitert werden. Andere Tabellen werden nicht unterstützt.

Insbesondere werden Unterabfragen nicht unterstützt, aber Verknüpfungen mit anderen Tabellen werden unterstützt.
Keine Validierung. Alle Abfragen verfügen über eine Lfx_Status Spalte mit dem Wert U oder , Dder angibt, ob die Zeile einen Update- oder einen Delete-Vorgang darstellt.
CollectionName Ein Name für eine Gruppe von Datentabellen. Dieser Name muss eindeutig sein. Tabellen in derselben Auflistung können nicht voneinander abhängig sein. Beim Versuch, ein Management Pack zu importieren, in dem ein bereits verwendeter Sammlungsname vorhanden ist, tritt ein Fehler auf, der im Ereignisprotokoll aufgezeichnet wird.
PrimaryKeyName Ein Abschnitt, in dem der eindeutige Name für den Primärschlüssel der Staging-Tabelle deklariert wird. Beim Versuch, ein Management Pack zu importieren, in dem ein bereits verwendeter Schlüsselname vorhanden ist, tritt ein Fehler auf, der im Ereignisprotokoll aufgezeichnet wird.
DependOnDataTable Name(n) der DataTable , deren Synchronisierung vor dieser erfolgen muss. Gewöhnlich wird dies zur Synchronisierung der Stagingtabelle verwendet, bevor sie in der Ansicht „Consumer“ durch das System gelesen wird.

Wenn Sie mehrere Sammlungen verwenden, sollte die Abhängigkeit nur zwischen Tabellen in verschiedenen Auflistungen ausgedrückt werden.
Nicht überprüft
DataField - Eigenschaften
Name, Type, AllowNull Hier handelt es sich um obligatorischen Felder für jeden Spaltentyp. Unterstützte Typen: int, nvarchar, datetime und xml. Nicht überprüft
PrimaryKeyACs, PrimaryKeyPosition Wenn ein Teil des Primärschlüssels die Position von links im Primärschlüssel angibt. Mit Lfx werden am Ende des Primärschlüssels zwei Spalten (Lfx_Status, Lfx_SourceId) für die interne Nutzung hinzugefügt.
Sortierung DATABASE_DEFAULT Nicht überprüft
DataCollection - Eigenschaften
DataCollectionName Muss identisch mit dem durch eine DataTable -Eigenschaft referenzierten Namen sein. Beim Versuch, ein Management Pack zu importieren, in dem ein bereits verwendeter Sammlungsname vorhanden ist, tritt ein Fehler auf, der im Ereignisprotokoll aufgezeichnet wird.
StagingName In DataProvider template-DefaultCache

In dataConsumer template-Not present
Nicht überprüft
"DataTables" CSV-Liste der Tabellen, die sich auf diese Sammlung beziehen
Einstellungen In DataProvider-Vorlage nicht vorhanden

In DataConsumer-Vorlage : Gibt die Typzuordnung an.
XML mit Escape-Sequenzen in folgender Syntax:

<TypeName>Microsoft.Windows.Computer</TypeName>

<MPName>Microsoft.Windows.Library</MPName>

<MPVersion>version of MP</MPVersion>

<MPToken>token for MP</MPToken>

Beispiele für benutzerdefinierte Configuration Manager Connectorkonfigurations-Management Packs

Im Folgenden finden Sie Schemadefinitionen und Configuration Manager Connector Management Pack-Beispiele, die Daten aus der Ansicht Configuration Manager SCCM_Ext.vex_GS_PC_BIOS importieren.

Weitere Informationen zu den Eigenschaften dieser Management Packs finden Sie in der Tabelle weiter oben in diesem Artikel. Verwenden Sie einen XML-Editor, z. B. den Editor in Microsoft Visual Studio, um diese Beispiele an Ihre Importszenarien anzupassen.

Importieren von Daten aus einer gehosteten Klasse

Wenn Sie eine gehostete Klasse angeben, sollte die Ansicht in der DataConsumer-Vorlage Spalten für die key-Eigenschaft der übergeordneten Klasse enthalten. In diesem Beispiel wird die Klasse, in der die BIOS-Informationen enthalten sind, unter einem Computer gehostet.

In diesem Beispiel sind in dem Configuration Manager-Management Pack für die Connectorkonfiguration zwei Sammlungen in den Abschnitten DataProvider und DataConsumer angegeben, eine für den Import der Computerdaten und eine für den Import der BIOS-Daten.

Klassendefinition


<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1">
  <Manifest>
    <Identity>
      <ID>SampleBIOSMP</ID>
      <Version>1.0.0.0</Version>
    </Identity>
    <Name>BIOS Class MP</Name>
    <References>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <EntityTypes>
      <ClassTypes>
        <ClassType ID="HostedCustomClass" Accessibility="Public" Base="System!System.ConfigItem" Hosted="true" Abstract="false">
            <Property ID="SerialNumber" Type="string" Key="true"/>
        </ClassType>
      </ClassTypes>
      <RelationshipTypes>
        <RelationshipType ID="Microsoft.Windows.ComputerHostsBIOS" Accessibility="Public" Base="System!System.Hosting">
          <Source ID="Computer" Type="Windows!Microsoft.Windows.Computer" />
          <Target ID="BIOSClass" Type="HostedCustomClass" />
        </RelationshipType>      
      </RelationshipTypes>
    </EntityTypes>
  </TypeDefinitions>
</ManagementPack>

Configuration Manager Connector Configuration Management Pack

<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1">
  <Manifest>
    <Identity>
      <ID>CnfgMgrBiosSample</ID>
      <Version>7.0.5229.0</Version>
    </Identity>
    <Name>CnfgMgrBiosSample</Name>
    <References>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="LFX">
        <ID>ServiceManager.LinkingFramework.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Templates>
    <ObjectTemplate ID="DataProvider.Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms" TypeID="LFX!System.LinkingFramework.DataConnector.Projection">
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DataConnectorName$">
          Microsoft_EnterpriseManagement_ServiceManager_Connector_Sms
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/IsProvider$">
          True
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/SolutionName$">SampleBIOS</Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryPoint$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms.SmsConnector
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryAssembly$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms,
          Version="7.0.5000.0",
          Culture=neutral,
          PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/WinFormUIAssembly$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms.SmsConnector,   
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms, Version="7.0.5000.0", Culture=neutral,
          PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/InstallSQLScripts$"></Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DisableParallelProcess$">
          True
      </Property>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.Sample_vex_R_System</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_R_System</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">S.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">S.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT S.ResourceID,
                                S.ChangeAction as Lfx_Status,
                                S.Netbios_Name0,
                                S.Resource_Domain_OR_Workgr0
                            FROM SCCM_Ext.vex_R_System S
                            INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                                ON S.ResourceID = CM.ResourceID
                            INNER JOIN SCCM_Ext.vex_Collection C
                                ON C.CollectionID = CM.CollectionID
                            WHERE ((S.ChangeAction = 'U' AND S.Client_Type0 != 3 AND S.Hardware_ID0 IS NOT NULL)
                                  OR S.ChangeAction = 'D')
                                  AND $COLLECTIONLIST
                            ORDER BY S.rowversion
                   ]]>
</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">BIOSComputers</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_R_SYSTEM]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">Netbios_Name0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">64</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">Resource_Domain_OR_Workgr0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">255</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_GS_COMPUTER_SYSTEM</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">CS.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">CS.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT CS.ResourceID,
                                    CS.GroupKey,
                                    CS.ChangeAction as Lfx_Status,
                                    CS.Name0,
                                    CS.Domain0
                            FROM SCCM_Ext.vex_GS_COMPUTER_SYSTEM CS
                            INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                                ON CS.ResourceID = CM.ResourceID
                            INNER JOIN SCCM_Ext.vex_Collection C
                                ON C.CollectionID = CM.CollectionID  
                            WHERE $COLLECTIONLIST
                            ORDER BY CS.rowversion
                   ]]>
</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">BIOSComputers</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_GS_COMPUTER_SYSTEM]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[GroupKey]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">1</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[Name0]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">64</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[Domain0]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">32</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.vex_GS_PC_BIOS</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_GS_PC_BIOS</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">S.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">S.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                      SELECT S.ChangeAction as Lfx_Status,
                      S.ResourceID,
                      S.BatchingKey,
                      S.GroupKey,
                      S.SerialNumber0
                      FROM SCCM_Ext.vex_GS_PC_BIOS S
                      INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                        ON S.ResourceID = CM.ResourceID
                      INNER JOIN SCCM_Ext.vex_Collection C
                        ON C.CollectionID = CM.CollectionID
                      WHERE C.ChangeAction = 'U' AND CM.ChangeAction = 'U' AND $COLLECTIONLIST
                      ORDER BY S.rowversion
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_PROVIDER_BIOS_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_GS_BIOS1]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">BatchingKey</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">GroupKey</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">SerialNumber0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">34</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">BIOSComputers</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/StagingName$">DefaultCache</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">SCCM_Ext.Sample_vex_R_System,SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM</Property>
      </Object>
      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_PROVIDER_BIOS_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/StagingName$">DefaultCache</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">SCCM_Ext.vex_GS_PC_BIOS</Property>
      </Object>
    </ObjectTemplate>

    <ObjectTemplate ID="DataConsumer.Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms" TypeID="LFX!System.LinkingFramework.DataConnector.Projection">
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DataConnectorName$">
          MomStore
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/IsProvider$">
          False
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/SolutionName$">SampleBIOS</Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryPoint$">
  Microsoft.EnterpriseManagement.ServiceManager.Linking.Consumer.OperationalStore.OperationalStoreConsumer
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryAssembly$">
  Microsoft.EnterpriseManagement.ServiceManager.Linking.Consumer.OperationalStore,
  Version="7.0.5000.0",
  Culture=neutral,
  PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/InstallSQLScripts$"><![CDATA[
                        <Script>
                             if not object_id('[LFXSTG].[v_Sample_SMS_BIOSComputer]') is null
                                drop view [LFXSTG].[v_Sample_SMS_BIOSComputer];
                             exec ('
                                CREATE VIEW [LFXSTG].[v_Sample_SMS_BIOSComputer] AS
                                    SELECT S.Lfx_RowId,
                                           S.Lfx_SourceID,
                                           S.Lfx_Timestamp,
                                           S.Lfx_Status,
                                           CS.Name0 AS ''DisplayName'',
                                           COALESCE(CS.Name0, S.Netbios_Name0)
                                    + ''.'' + COALESCE(CS.Domain0, S.Resource_Domain_OR_Workgr0) AS ''PrincipalName''
                                    FROM LFXSTG.Sample_SMS_vex_R_System S
                                    INNER JOIN LFXSTG.Sample_SMS_vex_GS_COMPUTER_SYSTEM CS
                                         ON S.ResourceID = CS.ResourceID AND S.Lfx_SourceId = CS.Lfx_SourceId
                                    WHERE S.Netbios_Name0 IS NOT NULL
                                        AND S.Resource_Domain_OR_Workgr0 IS NOT NULL
                                ');
                        </Script>

                        <Script>
                            if not object_id('[LFXSTG].[v_Sample_BIOS]') is null
                                drop view [LFXSTG].[v_Sample_BIOS]
                            exec ('
                                CREATE VIEW [LFXSTG].[v_Sample_BIOS] AS
                                    SELECT P.Lfx_RowId AS Lfx_RowId,
                                        P.Lfx_SourceId,
                                        P.Lfx_Timestamp AS Lfx_Timestamp,
                                        P.Lfx_Status as Lfx_Status,
                                        P.SerialNumber0 AS ''SerialNumber'',
                                        COALESCE(CS.Name0, S.Netbios_Name0) + ''.'' + COALESCE(CS.Domain0, S.Resource_Domain_OR_Workgr0) AS ''PrincipalName''
                                    FROM [LFXSTG].Sample_SMS_vex_GS_PC_BIOS P
                                    INNER JOIN [LFXSTG]. Sample_SMS_vex_R_System S
                                        ON P.ResourceID=S.ResourceID AND P.Lfx_SourceId = S.Lfx_SourceId
                                    INNER JOIN [LFXSTG]. Sample_SMS_vex_GS_COMPUTER_SYSTEM CS
                                        ON S.ResourceID=CS.ResourceID
                                           AND S.Lfx_SourceId = CS.Lfx_SourceId
                                ')
                        </Script>
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/UninstallSQLScripts$"><![CDATA[
                       <Script>
                            if not object_id('[LFXSTG].[v_Sample_SMS_BIOSComputer]') is null
                                drop view [LFXSTG].[v_Sample_SMS_BIOSComputer];
               </Script>

                       <Script>
                            if not object_id('[LFXSTG].[v_Sample_BIOS]') IS NULL
                                drop view [LFXSTG].[v_Sample_BIOS];
               </Script>
                   ]]>
        </Property>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">Sample_SMS_Computer</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">E.Lfx_Timestamp</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">E.Lfx_RowId</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">500</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">false</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT * FROM [LFXSTG].v_Sample_SMS_BIOSComputer E
                    ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_Computers_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DependOnDataTable$">SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM,SCCM_Ext.Sample_vex_R_System</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">Sample_SMS_BIOS_CONSUMER_VIEW</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">C.Lfx_Timestamp</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">C.Lfx_RowId</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">500</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">False</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                        select C.* from [LFXSTG].v_Sample_BIOS C
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_BIOS_CONSUMER_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DependOnDataTable$">SCCM_Ext.vex_GS_PC_BIOS, Sample_SMS_Computer</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_Computers_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">Sample_SMS_Computer</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/Settings$"><![CDATA[
<TypeName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">Microsoft.Windows.Computer</TypeName>
<MPName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">Microsoft.Windows.Library</MPName>
<MPVersion xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">7.0.5229.0</MPVersion>
<MPToken xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">31bf3856ad364e35</MPToken>
]]>
</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_BIOS_CONSUMER_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">Sample_SMS_BIOS_CONSUMER_VIEW</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/Settings$"><![CDATA[
<TypeName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">HostedCustomClass</TypeName>
<MPName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">SampleBIOSMP</MPName>
<MPVersion xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">1.0.0.0</MPVersion>
        ]]>
        </Property>
      </Object>
    </ObjectTemplate>
  </Templates>
</ManagementPack>

Nächste Schritte