Enterprise-Geodatabases verwenden Protokolldateitabellen, um eine Liste ausgewählter Datensätze zu führen. Datensätze werden in den folgenden Situationen zur späteren Verwendung von der Anwendung in Protokolldateitabellen geschrieben:
- Ein Client erstellt einen Auswahlsatz mit einer bestimmten Größe (100 Datensätze in ArcMap, 1.000 Datensätze in ArcGIS Pro; 1.000 Datensätze, wenn ObjectIDs von einem Feature-Service angefordert werden).
- Sie nehmen einen Abgleich vor oder schreiben in eine versionierte Geodatabase zurück.
- Eine Client-Anwendung checkt Daten für die entkoppelte Bearbeitung aus.
In Protokolldateitabellen werden die ObjectIDs der ausgewählten Features gespeichert, damit sie nochmals angezeigt werden können. Dadurch können Informationen schneller analysiert und verarbeitet werden.
Es gibt drei Protokolldateioptionen: gemeinsame, sitzungsbasierte und Gruppen sitzungsbasierter Protokolldateien. Jede Option wird in diesem Thema in einem eigenen Abschnitt erläutert.
Standardmäßig verwenden Geodatabases in SQL Server sitzungsbasierte Protokolldateien, die in der temporären Datenbank (tempdb) erstellt werden. Hierbei handelt es sich um die empfohlene Einstellung, die in den meisten Fällen ausreichend ist. Wenn Sie die Einstellungen jedoch ändern möchten, finden Sie weitere Informationen dazu unter Ändern der Einstellungen von Protokolldateitabellen.
Sitzungsbasierte Protokolldateien
Sitzungsbasierte Protokolldatei-Datentabellen beziehen sich auf eine einzelne Sitzung und können mehrere Auswahlsätze (Protokolldateien) enthalten. Jede angemeldete Sitzung benötigt einen Tabellensatz für Auswahlen.
Wann werden sitzungsbasierte Protokolldateien verwendet?
Wenn Ihre Geodatabase in SQL Server gespeichert ist, sollten Sie diese Option auf jeden Fall wählen. In lokalen SQL Server-Datenbanken besteht die Möglichkeit, sitzungsbasierte Protokolldateitabellen in der tempdb-Datenbank zu speichern, d. h. es müssen keine Tabellen in der Geodatabase verwaltet werden, es werden möglichst wenige Transaktionsprotokolle erstellt, und Sie müssen nicht allen Benutzern CREATE TABLE-Berechtigungen in der Datenbank gewähren. Da dies die Standardeinstellung für Geodatabases in lokalen SQL Server-Datenbanken ist, müssen Sie keine Einstellungen ändern, um diese Protokolldateioption verwenden zu können.
Für sitzungsbasierte Protokolldateien erstellte Tabellen
Mit den Standardeinstellungen in SQL Server wird in "tempdb" eine Tabelle im Format "##SDE_SESSION<SDE_ID >_<DBID>" erstellt. <SDE_ID> ist die eindeutige Sitzungs-ID aus der Tabelle "SDE_process_information". Die Variable "<dbid>" steht für die Datenbank-ID in SQL Server. Diese Tabelle wird abgeschnitten, sobald die verbindende Anwendung ihre Protokolldateien löscht. Die Tabelle wird gelöscht, sobald die Sitzung getrennt wird. Beachten Sie, dass temporäre Objekte nicht im Objektexplorer in Management Studio angezeigt werden können.
Wenn sitzungsbasierte Protokolldateitabellen direkt in der Geodatabase (nicht in tempdb) erstellt werden, werden drei Tabellen erstellt: SDE_LOGFILES, SDE_LOGFILE_DATA und SDE_SESSION<SDE_ID >. "SDE_LOGFILE_DATA" wird in diesem Fall nicht verwendet, aber automatisch erstellt. In der Tabelle "SDE_LOGFILES" werden Informationen über den Auswahlsatz und das Sitzungs-Tag "<SDE_ID>" gespeichert, das an den Namen der Tabelle "SDE_SESSION" angehängt wird. In der SDE_SESSION-Tabelle werden die Feature-Kennung für den ausgewählten Satz und die Protokolldatei-ID gespeichert.
Die SDE_LOGFILES- und SDE_LOGFILE_DATA-Tabellen verbleiben in der Geodatabase. Die SDE_LOGFILES-Tabelle wird abgeschnitten, wenn die verbindende Anwendung getrennt wird. Die SDE_SESSION<SDE_ID>-Tabelle wird abgeschnitten, sobald die verbindende Anwendung die Protokolldateien löscht. Die Tabelle wird gelöscht, sobald die Sitzung getrennt wird.
Einstellungen zur Steuerung der Speichermethode für sitzungsbasierte Protokolldateitabellen und Indizes
Zum Schlüsselwort "LOGFILE_DEFAULTS" der Tabelle "sde_dbtune" gehören mehrere Parameter, mit denen Sie steuern können, wie und wo Protokolldateitabellen in der Datenbank gespeichert werden. Zur Verwendung von sitzungsbasierten Protokolldateien müssen diese Parameter nicht festgelegt werden, Sie können sie jedoch verwenden, um die Speichermethode für die SDE_LOGFILES-, SDE_LOGFILE_DATA- und SDE_SESSION-Tabellen sowie für die Indizes in der Datenbank zu ändern.
Für SQL Server stehen folgende Parameter zur Verfügung:
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
- SESSION_TEMP_TABLE
Der Parameter "SESSION_TEMP_TABLE" muss auf 1 (true) festgelegt werden, um die Erstellung der sitzungsbasierten Protokolldateitabellen in der temporären Datenbank "tempdb" zuzulassen.
Wenn Sie den Parameter "SESSION_TEMP_TABLE" auf 0 (false) festlegen, werden die Tabellen "SDE_LOGFILES", "SDE_LOGFILE_DATA" und "SDE_SESSION<SDE_ID>" im Schema des verbindenden Benutzers erstellt. Hierfür muss der Benutzer über bestimmte Berechtigungen verfügen.
Erläuterungen zu diesen Parametern finden Sie unter Konfigurationsparameter für SQL Server.
Erforderliche Berechtigungen für sitzungsbasierte Protokolldateien
Wenn Sie die empfohlenen SQL Server-Einstellungen für lokale Datenbanken verwenden, benötigen Benutzer lediglich die Möglichkeit, eine Verbindung mit der Datenbank herzustellen. Wenn Sie den Parameter "SESSION_TEMP_TABLE" in der Tabelle "SDE_DBTUNE" jedoch auf 0 festlegen, benötigen Benutzer zusätzlich zur CONNECT-Berechtigung auch die CREATE TABLE-Berechtigung.
Gemeinsame Protokolldateien
Gemeinsame Protokolldateien können von allen Sitzungen gemeinsam verwendet werden, die als derselbe Benutzer verbunden sind. Wenn mehrere Benutzer eine Verbindung über dasselbe Benutzerkonto herstellen, werden von all diesen Sitzungen Datensätze in dieselbe Protokolldateitabelle eingefügt und daraus gelöscht.
Wann werden gemeinsame Protokolldateien verwendet?
Freigegebene Protokolldateien werden nur dann verwendet, wenn Sie keine Tabellen in "tempdb" erstellen möchten, Sie eine große Anzahl von Sitzungen gleichzeitig ausführen und diese Sitzungen ihre Verbindungen jeweils über ein bestimmtes Benutzerkonto herstellen.
Wann ist die Verwendung von gemeinsamen Protokolldateien nicht empfehlenswert?
Die Verwendung freigegebener Protokolldateien ist nur dann sinnvoll, wenn die Protokolldateitabellen nicht im Schema der einzelnen Benutzer gespeichert werden sollen.
Für gemeinsame Protokolldateien erstellte Tabellen
Für diese Option werden die Protokolldateitabellen "SDE_LOGFILES" und "SDE_LOGFILE_DATA" verwendet. Diese werden im Schema des verbindenden Benutzers erstellt, wenn dieser das erste Mal eine Auswahl trifft, die den Auswahlschwellenwert überschreitet.
In "SDE_LOGFILES" werden Informationen über jeden erstellten Auswahlsatz (Protokolldatei) gespeichert. Die Spalten "logfile_name" und "logfile_id" in dieser Tabelle identifizieren eindeutig den Namen der Protokolldatei. Die Spalte "logfile_id" verknüpft außerdem den Protokolldatei-Datensatz mit der Tabelle "SDE_LOGFILE_DATA". Die Tabelle "SDE_LOGFILE_DATA" enthält die "logfile_data_id" sowie die Feature-Kennung für die ausgewählten Datensätze.
Alle Datensätze werden sofort gelöscht, wenn eine Auswahl gelöscht wird, damit die Tabelle "SDE_LOGFILE_DATA" nicht zu groß wird. Die Tabelle "SDE_LOGFILES" wird abgeschnitten, wenn die Sitzung beendet wird. Sowohl die Tabelle "SDE_LOGFILE_DATA" als auch die Tabelle "SDE_LOGFILES" verbleiben im Benutzerschema.
Erforderliche Berechtigungen für shared Protokolldateien
Da der Besitzer der Protokolldateitabellen der Benutzer ist, der die Verbindung herstellt, müssen Benutzern Berechtigungen erteilt werden, mit denen sie die erforderlichen Datenobjekte (z. B. Tabellen) erstellen können. Dies ist auch dann erforderlich, wenn der Benutzer nur schreibgeschützten Zugriff auf die Geodatabase hat. Ohne diese Berechtigungen erhalten Benutzer eine Fehlermeldung, wenn sie zum ersten Mal einen Auswahlsatz erstellen, der größer als der Schwellenwert für diese bestimmte Client-Anwendung ist. Nachdem die Tabellen SDE_LOGFILES und SDE_LOGFILE_DATA für einen Benutzer erstellt wurden, kann der Geodatabase-Administrator die Berechtigungen jedoch widerrufen.
Beispiel: Jan Müller ist Städteplaner, der nur Daten aus der Geodatabase auswählt, um Analysen für seine Arbeit zu erstellen. Aus diesem Grund ist er ein Benutzer mit schreibgeschütztem Zugriff. Damit er die SDE_LOGFILES- und SDE_LOGFILE_DATA-Tabellen in der Enterprise-Geodatabase der Stadt erstellen kann, benötigt er die Berechtigung zum Erstellen von Tabellen in der Geodatabase.
Der Geodatabase-Administrator bittet Jan Müller, sich bei der Geodatabase anzumelden und eine Auswahl zu treffen, die über dem Auswahlgrenzwert liegt, anstatt ihm eine zeitlich uneingeschränkte Berechtigung zum Erstellen von Tabellen zu gewähren. Anschließend widerruft der Geodatabase-Administrator die Berechtigung zum Erstellen von Tabellen für Jan Müller.
Die folgenden Berechtigungen sind erforderlich, um freigegebene Protokolldateitabellen in SQL Server verwenden zu können:
- CONNECT
- CREATE TABLE
Optionale Steuerung für freigegebene Protokolldateitabellen und Indizes
Für SQL Server stehen folgende Parameter zur Verfügung:
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
Weitere Informationen finden Sie unter Konfigurationsparameter für SQL Server.
Protokolldatei-Pools, deren Besitzer der Geodatabase-Administrator ist
Der Geodatabase-Administrator kann einen Pool von sitzungsbasierten Protokolldateien erstellen, die ausgecheckt und von anderen Benutzern verwendet werden können. Gemeinsame Protokolldateien können nicht aus einem Protokolldatei-Pool ausgecheckt werden.
Durch das Verwenden eines Pools von Protokolldateien kann vermieden werden, dass Benutzern die zum Erstellen von Objekten in der Datenbank notwendigen Berechtigungen erteilt werden müssen.
Verwendung von Protokolldatei-Pools
Verwenden Sie einen Protokolldatei-Pool, wenn Sie Benutzern nicht die Möglichkeit geben können, Protokolldateitabellen in ihren eigenen Schemas zu erstellen. Die Benutzer benötigen jedoch trotzdem Berechtigungen zum Erstellen von Sitzungen bzw. zum Herstellen von Datenbankverbindungen.
Wann ist die Verwendung von Protokolldatei-Pools nicht empfehlenswert?
Schlussendlich ist der Wartungsaufwand bei der Verwendung von Protokolldatei-Pools geringfügig höher, da Sie die Anzahl der notwendigen Protokolldateitabellen berechnen müssen, und möglicherweise müssen Sie die Größe des Pools oder die Anzahl der verwendeten Pools anpassen. Beachten Sie, dass durch einen großen Protokolldatei-Pool oder durch eine große Anzahl an Protokolldatei-Pools die Performance negativ beeinflusst werden kann.
Für freigegebene Protokolldatei-Pools erstellte Tabellen
Sie legen die Anzahl der SDE_LOGPOOL_<table_ID>-Tabellen fest, die vom Werkzeug Einstellungen für Protokolldateitabellen ändern im Schema des Geodatabase-Administrators erstellt werden. Wenn Sie beispielsweise 5 Tabellen festlegen, werden die folgenden Tabellen im Schema des Geodatabase-Administrators erstellt:
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
In einer zusätzlichen Tabelle im Schema des Geodatabase-Administrators, SDE_LOGFILE_POOL, werden die SDE_ID der Sitzung und eine Tabellen-ID aufgezeichnet. Der Teil "<table_ID>" im Namen der SDE_LOGPOOL-Tabelle entspricht dem Wert der Spalte "table_ID" in der SDE_LOGFILE_POOL-Tabelle.
Jede Sitzung, für die eine Protokolldateitabelle erforderlich ist, fügt der SDE_LOGFILE_POOL-Tabelle einen Datensatz hinzu, und die Sitzung wird einer der SDE_LOGPOOL_<table_ID>-Tabellen zugeordnet. Wenn in derselben Sitzung zusätzliche Protokolldateien erstellt werden, wenn z.B. in einer ArcMap-Sitzung ein zweiter Auswahlsatz mit 300 Datensätzen erstellt wird, werden die neuen Protokolldateien derselben SDE_LOGPOOL-Tabelle hinzugefügt.
Wenn Protokolldateien gelöscht werden, wird die SDE_LOGPOOL-Tabelle, die für die Sitzung ausgecheckt wurde, abgeschnitten. Wenn beispielsweise der zweite Auswahlsatz in der ArcMap-Sitzung gelöscht wird, werden die 300 Datensätze aus der SDE_LOGPOOL-Tabelle entfernt, die Datensätze des ersten Auswahlsatzes bleiben jedoch erhalten. Wenn der erste Auswahlsatz gelöscht wird, werden die Datensätze des ersten Auswahlsatzes aus der SDE_LOGPOOL-Tabelle entfernt.
Wenn Sie einen Pool mit eigenständigen Protokolldateien verwenden, wird für jede Protokolldatei ein neuer Datensatz in der SDE_LOGFILE_POOL-Tabelle erstellt und eine der SDE_LOGPOOL-Tabellen verwendet. Beispiel: Wenn Sie in einer ArcMap-Sitzung (1) aus einer Feature-Class mit Informationen zu Geschäften alle Geschäfte mit einer Lizenz zum Verkauf von Speisen und (2) aus einer Feature-Class mit Informationen zu Gullys alle Auffangbecken im Umkreis von einem Kilometer zu einem Restaurant auswählen, werden der SDE_LOGFILE_POOL-Tabelle zwei Datensätze hinzugefügt: ein Datensatz für den Auswahlsatz der Geschäfte und ein Datensatz für den Auswahlsatz der Auffangbecken. Jedem Auswahlsatz wird eine eigene SDE_LOGPOOL-Tabelle zugewiesen.
Wenn eine Protokolldatei (ein Auswahlsatz) gelöscht wird, wird die entsprechende SDE_LOGPOOL-Tabelle abgeschnitten.
Erforderliche Berechtigungen für Protokolldatei-Pools
Um die Protokolldateitabellen im Pool verwenden zu können, müssen Benutzer die Möglichkeit haben, eine Datenbankverbindung herzustellen und die Objekte im Schema des Geodatabase-Administrators zu verwenden. Daher wird für die Verwendung von Pools mit Protokolldateitabellen nur die Berechtigung "CONNECT" benötigt.
Die CONNECT-Berechtigung wird allen Benutzern standardmäßig gewährt. Somit müssen Sie diese Berechtigung nur explizit erteilen, wenn Sie sie aus PUBLIC widerrufen haben.
Optionale Speichersteuerung für Protokolldatei-Pools
Zum Schlüsselwort "LOGFILE_DEFAULTS" der Tabelle "sde_dbtune" gehören einige wenige Parameter, mit denen Sie steuern können, wie die SDE_LOGPOOL<SDE_ID>-Tabellen und die zugehörigen Indizes gespeichert werden.
Enterprise-Geodatabases in SQL Server verwenden die Parameter LD_STORAGE und LD_INDEX_ALL in der Tabelle "SDE_dbtune", um die Speichermethode für die SDE_LOGPOOL<SDE_ID>-Tabellen und die zugehörigen Indizes festzulegen. Mit diesen beiden Parametern wird auch die Speicherung der Tabelle "SDE_LOGFILE_DATA" und der zugehörigen Indizes gesteuert. Erläuterungen zu diesen Parametern finden Sie unter Konfigurationsparameter für SQL Server.
Zur Verwendung von Protokolldatei-Pools müssen diese Parameter nicht festgelegt werden, Sie können sie jedoch verwenden, um die Speichermethode für die SDE_LOGPOOL<SDE_ID>-Tabellen sowie für die Indizes in der Datenbank zu ändern.