HOW TO
In den nachfolgenden Anweisungen wird beschrieben, wie sich ein Bericht mit Statistiken zur Geodatabase-Versionierung in einer SQL Server-Geodatabase erstellen lässt. Das folgende SQL-Skript enthält Informationen über eine versionierte Geodatabase in SQL Server. In der Ausgabe wird Folgendes aufgeführt: die Anzahl der Versionen, die das Komprimieren der Default-Version auf State 0 blockieren, die Namen der Besitzer der ersten fünf blockierenden Versionen, die Anzahl der States, die Anzahl der Einträge in der Tabelle "state_lineages" sowie die Anzahl der Zeilen in der versionierten Tabelle und den Delta-Tabellen.
Gehen Sie folgendermaßen vor:
SET NOCOUNT ON --Heben Sie die Kommentierung der CREATE TABLE- und der INSERT INTO-Anweisung --in Zeile 150 und 151 auf, um eine permanente Tabelle mit der Anzahl der Hinzufügungen und Löschungen zu generieren. /* create table delta_info ( id int identity(1,1), table_name nvarchar(100), registration_id int, adds int, deletes int ) */ DECLARE @versions_info_tab TABLE ( ver_info_state_id int, source_lin int, com_anc_id int, lin_name int, state_id int ) DECLARE @blocking_list TABLE ( state_id int, name varchar(100) ) DECLARE @delta_table_info TABLE ( a_table_name nvarchar(50), d_table_name nvarchar(50), a_table_count int, d_table_count int ) DECLARE @ver_count int = (SELECT COUNT(*) FROM sde.SDE_versions) DECLARE @state_count int = (SELECT COUNT(*) FROM sde.sde_states) DECLARE @state_lineages_count int = (SELECT COUNT(*) cnt FROM sde.SDE_state_lineages) -- Falls die Geodatabase zuvor noch nie komprimiert wurde, ist die Tabelle "SDE_compress_log" nicht vorhanden. DECLARE @last_compress varchar(15) IF EXISTS (SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN ('SDE', 'DBO') AND table_name = 'SDE_compress_log') BEGIN SET @last_compress = CONVERT(varchar(15), (SELECT MAX(compress_end) FROM sde.SDE_compress_log), 1) END ELSE BEGIN SET @last_compress = 'No compress log table'; END DECLARE @ver_info_state_id int, @message varchar(100) = '', @source_lin int, @com_anc_id int, @lin_name int, @state_id int, @ver_blocking int = 0, @cur_max_state int, @pos int, @idx int, @s1 int = 0, @s2 int = 0, @s3 int = 0, @s4 int = 0, @s5 int = 0, @blocking_ver_name nvarchar(100), @blocking_ver_count int, @table_info_name varchar(100), @table_info_reg_id int, @table_info_owner varchar(100), @p_stmt nvarchar(200),@a_stmt nvarchar(max), @d_stmt nvarchar(max), @row_count int DECLARE table_info_cur CURSOR FOR SELECT owner, table_name, registration_id FROM sde.sde_table_registry WHERE sde.sde_table_registry.object_flags&8 = 8 DECLARE ver_list_cur CURSOR FOR SELECT DISTINCT state_id FROM sde.sde_versions WHERE name = 'DEFAULT' and owner IN ('SDE', 'DBO') ORDER BY state_id; SELECT @state_id=state_id, @lin_name = lineage_name FROM sde.sde_states WHERE state_id = (SELECT state_id FROM sde.sde_versions WHERE name = 'DEFAULT' and owner IN ('SDE', 'DBO')); SET @cur_max_state = @state_id PRINT '========== Versioning Statistics =================' PRINT '' PRINT 'Number of versions: ' + CONVERT(varchar, @ver_count) PRINT '==============' OPEN ver_list_cur FETCH NEXT FROM ver_list_cur INTO @ver_info_state_id WHILE @@FETCH_STATUS = 0 BEGIN SELECT @row_count = COUNT(*) FROM sde.sde_state_lineages WHERE lineage_name = @lin_name AND lineage_id
Ausgabebeispiel: ==========Versioning Statistics================= Number of versions: 2 ============== Number of versions blocking DEFAULT: 1 Blocking Versions: dbo.QA Number of states: 3577 Number of state lineages: 100015 Last Compress: 2018-01-09 Table: DBO.CONTROLCORNER (45) Adds Count: 124 Deletes Count: 124 Table: DBO.PLSSBOUNDARY (46) Adds Count: 8 Deletes Count: 8
Hilfe von ArcGIS-Expert*innen erhalten
Die Esri Support-App herunterladen