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.
Alternative Schlüssel in Microsoft Dataverse ermöglichen es Ihnen, Tabellenzeilen eindeutig zu identifizieren, indem Sie Geschäftsspalten anstelle eines GUID-Primärschlüssels verwenden. Diese Identifikatoren sind der Primärschlüssel für jede Tabelle. Wenn Sie sich mit einem externen Datenspeicher integrieren müssen, können Sie möglicherweise eine Spalte zu den externen Datenbanktabellen hinzufügen, um einen Verweis auf den eindeutigen Bezeichner einer Zeile in Dataverse zu enthalten. Manchmal können Sie jedoch die externe Datenbank nicht ändern. Mithilfe alternativer Schlüssel können Sie eine Spalte in einer Dataverse-Tabelle definieren, die einem eindeutigen Bezeichner (oder einer eindeutigen Kombination aus Spalten) entspricht, die vom externen Datenspeicher verwendet werden. Dieser alternative Schlüssel kann eine Zeile in Dataverse anstelle des Primärschlüssels eindeutig identifizieren. Sie müssen in der Lage sein zu definieren, welche Spalten eine eindeutige Identität für Ihre Zeilen darstellen. Sobald Sie die Spalten identifiziert haben, die für die Tabelle eindeutig sind, können Sie sie über die angepasste Benutzeroberfläche (UI) oder im Code als alternative Schlüssel deklarieren. Dieser Artikel enthält Informationen zum Definieren alternativer Schlüssel im Datenmodell.
Erstellen Sie Alternativschlüssel
Sie können alternative Schlüssel programmgesteuert oder mithilfe der Anpassungstools erstellen. Weitere Informationen zur Verwendung der Anpassungstools finden Sie unter Definieren von Alternativschlüsseln mithilfe von Power Apps.
Um alternative Schlüssel programmgesteuert zu definieren, erstellen Sie zuerst ein Objekt vom Typ EntityKeyMetadata (oder verwenden Sie EntityKeyMetadata EntityType , wenn Sie mit Web-API arbeiten). Diese Klasse enthält die Schlüsselspalten. Nachdem Sie die Schlüsselspalten festgelegt haben, verwenden Sie CreateEntityKey, um die Schlüssel für eine Tabelle zu erstellen. Diese Nachricht nimmt den Tabellennamen und die EntityKeyMetadata-Werte als Eingabe, um den Schlüssel zu erstellen.
Beachten Sie beim Erstellen alternativer Schlüssel die folgenden Einschränkungen:
Gültige Spalten in Schlüssel-Tabellen-Definitionen
Fügen Sie nur Spalten der folgenden Typen in alternativen Schlüsseltabellendefinitionen hinzu:
Spaltentyp Anzeigename DecimalAttributeMetadata Dezimalzahl IntegerAttributeMetadata Ganze Zahl StringAttributeMetadata Einzelne Textzeile Datum-Uhrzeit-Attributsmetadaten Datum/Uhrzeit LookupAttributeMetadata Suche PicklistAttributeMetadata Optionssatz Attribute dürfen nicht mit einer Sicherheit auf Feldebene versehen sein
Gültige Schlüsselgröße
Wenn Sie einen Schlüssel erstellen, überprüft das System den Schlüssel, einschließlich, dass die Gesamtschlüsselgröße keine SQL-basierten Indexeinschränkungen wie 900 Bytes pro Schlüssel und 16 Spalten pro Schlüssel verletzt. Wenn die Schlüsselgröße die Einschränkungen nicht erfüllt, wird eine Fehlermeldung angezeigt.
Maximale Anzahl von alternativen Schlüsseltabellendefinitionen für eine Tabelle
Eine Tabelle in einer Dataverse-Instanz kann bis zu zehn alternative Schlüsseltabellendefinitionen aufweisen.
Unicode-Zeichen im Schlüsselwert
Wenn die Daten in einer Spalte, die in einem alternativen Schlüssel verwendet wird, eines der folgenden Zeichen
/,<,>,*,%,&,:,\\,?,+enthalten, funktionieren die Aktionen Abrufen (GET), Aktualisieren oder Upsert (PATCH) nicht. Wenn Sie nur Eindeutigkeit benötigen, funktioniert dieser Ansatz, aber wenn Sie diese Schlüssel als Teil der Datenintegration verwenden müssen, empfiehlt es sich, den Schlüssel für Spalten zu erstellen, die keine Daten mit diesen Zeichen enthalten.Nicht unterstützt in virtuellen Tabellen
Alternative Schlüssel werden in virtuellen Tabellen nicht unterstützt, da das System keine Eindeutigkeit erzwingen kann, wenn sich die Daten in einem anderen System befinden. Weitere Informationen finden Sie unter "Erste Schritte mit virtuellen Tabellen (Entitäten)".
Abrufen und Löschen von Alternativschlüsseln
Verwenden Sie die Anpassungs-UI, um alternative Schlüssel abzurufen oder zu löschen. Sie müssen keinen Code schreiben. Das SDK stellt jedoch die folgenden beiden Nachrichten bereit, um alternative Schlüssel programmgesteuert abzurufen und zu löschen:
| Meldungsanforderungsklasse | Beschreibung |
|---|---|
| RetrieveEntityKeyRequest | Ruft den angegebenen Alternativschlüssel ab. |
| DeleteEntityKeyRequest | Löscht den angegebenen Alternativschlüssel. |
Um alle Schlüssel für eine Tabelle abzurufen, verwenden Sie die Keys Eigenschaft der Klasse EntityMetadata (EntityMetadata EntityType oder EntityMetadata). Es liefert ein Array von Schlüsseln für eine Tabelle.
Verwenden Sie diese Web-API-Abfrage, um alle Tabellen anzuzeigen und zu sehen, welche alternative Schlüssel haben:
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=SchemaName&$expand=Keys($select=KeyAttributes)
Einige Beispiele, die diese Anfrage ergibt:
{
"SchemaName": "Account",
"MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84",
"Keys": [
{
"KeyAttributes": [
"accountnumber"
],
"MetadataId": "1dc7b1d2-6beb-ec11-bb3d-0022482ea769"
}
]
},
{
"SchemaName": "example_Table",
"MetadataId": "8f521e41-8934-ec11-b6e6-002248242f3b",
"Keys": [
{
"KeyAttributes": [
"example_key1",
"example_key2"
],
"MetadataId": "2f16d0c6-88ea-ec11-bb3d-0022482ea769"
}
]
}
Überwachen der Indexerstellung für Alternativschlüssel
Alternativschlüssel nutzen Datenbankindizes, um Eindeutigkeit zu gewährleisten und die Suchleistung zu optimieren. Wenn eine Tabelle viele Datensätze enthält, kann das Erstellen eines Indexes sehr lange dauern. Um die Anpassungs-UI und den Lösungsimport reaktionsfähiger zu gestalten, erstellen Sie den Index in einem Hintergrundprozess. Die EntityKeyMetadata.AsyncJob Eigenschaft (EntityKeyMetadata EntityType oder EntityKeyMetadata) bezieht sich auf den asynchronen Auftrag, der den Index erstellt. Die Eigenschaft EntityKeyMetadata.EntityKeyIndexStatus gibt den Status des Schlüssels im Verlauf seines Indexerstellungsauftrags an. Der Status kann eine der folgenden Werte sein:
- Ausstehend
- In Bearbeitung
- Aktiv
- Fehlgeschlagen
Wenn Sie einen alternativen Schlüssel mithilfe der API erstellen und die Indexerstellung fehlschlägt, können Sie Details zur Ursache des Fehlers anzeigen, die Probleme beheben und die Schlüsselanforderung mithilfe der ReactivateEntityKey (ReactivateEntityKey Action oder ReactivateEntityKeyRequest Nachricht) reaktivieren.
Wenn Sie den alternativen Schlüssel löschen, während ein Indexerstellungsauftrag noch aussteht oder ausgeführt wird, wird der Auftrag abgebrochen und der Index gelöscht.
Siehe auch
Verwenden Sie einen Alternativschlüssel, um auf einen Datensatz zu verweisen
Synchronisieren von Daten mit externen Systemen mithilfe der Änderungsnachverfolgung
Einen Datensatz mit Upsert einfügen oder aktualisieren
Definieren von Alternativschlüsseln für den Verweis auf Datensätze