CÓMO

Informar de las estadísticas de versiones de geodatabase en una geodatabase de SQL Server

Last Published: April 25, 2020

Resumen

Las instrucciones proporcionadas describen cómo informar de las estadísticas de versiones de geodatabase en una geodatabase de SQL Server. El siguiente script SQL informa sobre una geodatabase versionada en SQL Server. El resultado enumera el número de versiones, el número de versiones que bloquean la versión PREDETERMINADA para que se comprima en el estado 0, así como los nombres del propietario de las primeras cinco versiones de bloqueo, el número de estados, el número de entradas en la tabla state_lineages y el número de filas en la tabla versionada y las tablas delta.

  • Este script es comparable a los de las geodatabases de Oracle (KB 000010358).
  • Este script funciona de manera óptima en las geodatabases SQL Server con esquemas SDE y DBO normales.
  • Si fuera necesario, cambie el esquema SDE a DBO manualmente en el script. (CTRL-H, "sde.", "dbo.")
  • El resultado se envía a la pestaña Mensajes de SQL Server Management Studio.

Procedimiento

Siga las instrucciones proporcionadas a continuación.

  1. Copie y pegue el siguiente script en un editor de SQL o SQL Server Management Studio.
  2. Si fuera necesario, cambie el esquema de las tablas de SDE a DBO (CTRL-H, "sde.", "dbo.").
  3. Ejecute el script.
SET NOCOUNT ON

--Quite la marca de comentario de esta sentencia CREATE TABLE y de la declaración INSERT INTO
--en las líneas 150 y 151 para generar una tabla permanente que contenga los recuentos agregados y eliminados.
/* 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)

-- Si nunca se ha comprimido la geodatabase, la tabla SDE_compress_log no existe.
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 '========== Estadísticas de versiones ================='
PRINT ''
PRINT 'Número de versiones: ' + 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 

Ejemplo de salida:
==========Estadísticas de versiones=================
 
Número de versiones: 2   ==============
Número de versiones que bloquean la versión PREDETERMINADA: 1
Versiones de bloqueo: 
    dbo.QA
 
Número de estados: 3577
Número de linajes del estado: 100015
Última operación de compresión: 2018-01-09
 
Tabla:  DBO.CONTROLCORNER (45)
Recuento de agregados:    124
Recuento de eliminados: 124
 
Tabla:  DBO.PLSSBOUNDARY (46)
Recuento de agregados:    8
Recuento de eliminados: 8

Id. de artículo:000017513

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Información relacionada

Descubrir más sobre este tema