Vorbereiten Ihrer ServiceNow®-Instanz¶
Der Snowflake-Konnektor für ServiceNow® unterliegt den Nutzungsbedingungen für Konnektoren.
Bevor Sie den Snowflake Connector for ServiceNow® installieren, müssen Sie erst Ihre ServiceNow-Instanz einrichten.
Voraussetzungen¶
Führen Sie die folgenden Schritte aus, um Ihre ServiceNow-Instanz einzurichten:
Stellen Sie sicher, dass die ServiceNow-Instanz öffentlich zugänglich ist. Der Konnektor funktioniert nicht mit Instanzen, die hinter einem VPN verborgen sind.
Identifizieren Sie die ServiceNow-Tabellen, die die Daten enthalten, die Sie in Snowflake erfassen möchten.
Identifizieren oder erstellen Sie den ServiceNow-Benutzer für den Konnektor.
Um eine Verbindung zur ServiceNow-Instanz herzustellen, muss sich der Konnektor bei der Instanz als ServiceNow-Benutzer authentifizieren. Wählen Sie einen ServiceNow-Benutzer, der die folgenden Anforderungen erfüllt:
Der Benutzername darf keinen Doppelpunkt (
:
) enthalten.Der Benutzer muss Lesezugriff auf alle Datensätze in den ServiceNow-Tabellen haben, die Sie erfassen möchten. Zugriffssteuerungslisten (ACLs) dürfen keine Datensätze in diesen Tabellen vor diesem Benutzer verbergen.
Der Benutzer muss Lesezugriff auf alle Zeilen in den Tabellen
sys_db_object
(mit den Feldernname
,super_class
,sys_id
),sys_glide_object
(mit den Feldernname
,scalar_type
,sys_id
) undsys_dictionary
(mit den Feldernelement
,internal_type
,name
,sys_id
) haben, um die Schemaerkennung zu ermöglichen.Der Benutzer muss Lesezugriff auf alle Zeilen der Tabelle
sys_table_rotation
(mit den Feldernname
undsys_id
) haben, damit der Konnektor die richtige Erfassungsstrategie verwenden kann.Der Benutzer muss Zugriff auf das Feld
sys_updated_on
in den Tabellensys_db_object
,sys_glide_object
,sys_dictionary
undsys_table_rotation
sowie der Zugriffstabelle haben. Andernfalls werden die Tabellen mit dem weniger kosteneffektiven „Abschneiden und Laden“-Erfassungsmodus geladen.Bemerkung
Das Konfigurieren der Verbindung in Snowsight über den OAuth-Authentifikator zu ServiceNow ist nur mit dem interaktiven Benutzer möglich. Der ServiceNow-Benutzer ist interaktiv, wenn die Einstellung Web service access only für den Benutzer deaktiviert ist.
Sie können den OAuth-Authentifikator nur dann mit nicht interaktiven Benutzern verwenden, wenn Sie die Verbindung mit SQL-Befehlen konfigurieren. In diesem Fall können Sie sich nicht bei ServiceNow anmelden oder das OAuth-Aktualisierungstoken über Snowsight abrufen.
Wenn Sie planen, eine ServiceNow-Tabelle mit einer
sys_updated_on
-Spalte zu importieren und zu synchronisieren, richten Sie einen Index für diese Spalte ein. Weitere Informationen zum Einrichten der Indizes finden Sie in der ServiceNow-Dokumentation unter Tabellenindex erstellen.Nachdem Sie den Index über die Benutzeroberfläche erstellt haben, kann es einige Zeit dauern, bis der Index aufgebaut ist. Der Indizierungsprozess wird als Hintergrundaufgabe ausgeführt.
Wenn Ihre Instanz über große Tabellen verfügt, empfiehlt Snowflake, sich an den ServiceNow-Kundensupport zu wenden, um sich über den besten Ansatz zum Indizieren großer Tabellen zu informieren.
(Optional) Wenn Sie als Authentifizierungsmethode OAuth verwenden möchten und Ihrem ServiceNow-Benutzer die Nur-Lese-Rolle zugewiesen haben, stellen Sie sicher, dass in der Werteliste der Systemeigenschaft
glide.security.snc_read_only_role.tables.exempt_create
die Tabelleoauth_credential
enthalten ist.Erstellen oder bearbeiten Sie die Eigenschaft
glide.security.snc_read_only_role.tables.exempt_create
in der Tabellesys_properties
. Weitere Informationen zum Bearbeiten dieser Eigenschaft finden Sie in der ServiceNow-Wissensdatenbank.Weitere Informationen zum Hinzufügen von neuen Systemeigenschaften finden Sie in der ServiceNow-Dokumentation unter Systemeigenschaften hinzufügen.
(Optional) Einige Konnektorprozeduren, die für die Kernfunktionalität nicht wesentlich sind, verwenden den ServiceNow-Endpunkt
<service_now_instance>/<table_name>.do?SCHEMA
, um Tabellenschemas abzurufen. Dieser Endpunkt erfordert die Rolleadmin
. Weitere Informationen zu dieser Rolle finden Sie in der ServiceNow-Dokumentation unter Basissystemrollen. Wenn Sie den Konnektor mit einem Benutzer konfigurieren, der nicht diese Rolle hat, wird das Ausführen von Prozeduren, die auf diesem Endpunkt basieren, verhindert. Die betroffenen Prozeduren enthalten entsprechende Hinweise auf diese Anforderung.(Optional) Um die Weitergabe gelöschter Datensätze zu ermöglichen, verwenden Sie entweder die Tabelle
sys_audit_delete
oder eine kundenspezifische Erfassungstabelle als Quelle für Informationen zu gelöschten Datensätzen.Bemerkung
Beachten Sie, dass der Konnektor Zugriff auf alle Erfassungstabellendatensätze haben muss, sonst kann die Installation fehlschlagen. Andernfalls kann es vorkommen, dass Datensatzlöschungen in anderen Tabellen nicht korrekt sind.
Wenn Erfassungstabellenzeilen durch ACLs ausgeblendet werden, ist das Verhalten des Konnektors unvorhersehbar. Selbst wenn die Installation erfolgreich ist, kann es vorkommen, dass einige Löschungen zu einem späteren Zeitpunkt nicht korrekt synchronisiert werden.
So verwenden Sie
sys_audit_delete
:Setzen Sie das Dictionary-Attribut
no_audit_delete
auffalse
.Stellen Sie sicher, dass der ServiceNow-Benutzer für den Konnektor Zugriff auf die Tabelle
sys_audit_delete
und darin auf die Felderdocumentkey
,tablename
,sys_id
undsys_created_on
hat.
So verwenden Sie eine kundenspezifische Zugriffstabelle:
Erstellen Sie eine Zugriffstabelle mit dem Namen
snowflake_connector_journal
und Zeichenfolgespalten mit den Namendocumentkey
undtablename
.Stellen Sie sicher, dass der ServiceNow-Benutzer für den Konnektor Zugriff auf die Tabelle
snowflake_connector_journal
und darin auf die Felderu_documentkey
,u_tablename
,sys_id
undsys_created_on
hat.Erstellen Sie ein Skript-Include namens
RecordChange
mit dem folgenden Code:var RecordChange = Class.create(); RecordChange.prototype= { initialize :function() {}, captureChange :function(tableName, docID) { var changeCapture = new GlideRecord('u_snowflake_connector_journal'); changeCapture.initialize(); changeCapture.setValue('u_documentkey', docID); changeCapture.setValue('u_tablename', tableName); changeCapture.insert(); }, type :'RecordChange' };
Definieren Sie eine Geschäftsregel, um das Löschen des Datensatzes zu erfassen:
(function executeRule(current, previous /*null when async*/) { new RecordChange().captureChange(current.getTableName(), current.getUniqueValue()); })(current, previous);
Konfigurieren Sie für jede Tabelle, für die Sie gelöschte Datensätze weitergeben möchten, diese Geschäftsregel so, dass sie ausgeführt wird, nachdem ein Datensatz gelöscht wurde.
Bemerkung
Der Konnektor kann gelöschte Datensätze nur dann synchronisieren, wenn sie überwacht werden. Löschoperationen, die nicht DBDelete.setWorkflow()
aufrufen, werden nicht in Snowflake erfasst.
Weitere Informationen zur Verwendung von DBDelete.setWorkflow()
finden Sie in der ServiceNow-Produktdokumentation.
Beachten Sie auch die folgenden Hinweise zu gelöschten Datensätzen:
Das Löschen von Datensätzen wird bei Tabellen mit dem Dictionary-Attribut
no_audit_delete=true
nicht verfolgt.Das Löschen von Datensätzen aus Tabellen mit einem
sys
-Präfix wird standardmäßig nicht verfolgt.Der Konnektor kann Datensätze, die mit der Kaskaden-Datensatzlöschung gelöscht wurden, nur einlesen, wenn sich das Referenzfeld in einer geprüften Tabelle befindet. Weitere Informationen zum kaskadierenden Löschen von Datensätzen finden Sie in der ServiceNow-Produktdokumentation.
Nächste Schritte¶
Führen Sie nach Beendigung dieser Prozeduren die unter Installieren und Konfigurieren des Konnektors mit Snowsight bzw. Installieren und Konfigurieren des Konnektors mit SQL-Befehlen beschriebenen Schritte aus.