CÓMO
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.
Siga las instrucciones proporcionadas a continuación.
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
Empieza a chatear ahora