191 lines
8.2 KiB
Transact-SQL
191 lines
8.2 KiB
Transact-SQL
:on error exit
|
|
|
|
:out "$(OutputDir)\sql-diagnostics.txt"
|
|
SET NOCOUNT ON;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
|
|
SELECT CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)) AS product_version,
|
|
DB_NAME() AS database_name,
|
|
SYSUTCDATETIME() AS checked_at_utc,
|
|
CONVERT(datetime2(3), '$(StartUtc)', 127) AS export_start_utc,
|
|
'$(WarehouseId)' AS warehouse_id;
|
|
|
|
SELECT package_id, package_version, installed_at
|
|
FROM alg.shadow_package_manifest;
|
|
|
|
SELECT warehouse_id, snapshot_generation, snapshot_status, synchronized_at,
|
|
DATEDIFF(SECOND, synchronized_at, SYSUTCDATETIME()) AS snapshot_age_seconds,
|
|
CONVERT(varchar(64), source_signature, 2) AS source_signature,
|
|
source_row_count, instance_id, last_error
|
|
FROM alg.shadow_snapshot_state
|
|
WHERE warehouse_id = '$(WarehouseId)';
|
|
|
|
SELECT warehouse_id, instance_id, claimed_at, last_seen_at,
|
|
DATEDIFF(SECOND, last_seen_at, SYSUTCDATETIME()) AS heartbeat_age_seconds
|
|
FROM alg.shadow_instance_heartbeat
|
|
WHERE warehouse_id = '$(WarehouseId)';
|
|
|
|
SELECT 'cargo_space_snapshot' AS entity_name, state.snapshot_generation,
|
|
COUNT_BIG(snapshot.space_id) AS row_count
|
|
FROM alg.shadow_snapshot_state state
|
|
LEFT JOIN alg.cargo_space_snapshot snapshot
|
|
ON snapshot.warehouse_id = state.warehouse_id
|
|
AND snapshot.snapshot_generation = state.snapshot_generation
|
|
WHERE state.warehouse_id = '$(WarehouseId)'
|
|
GROUP BY state.snapshot_generation
|
|
UNION ALL
|
|
SELECT 'active_job_snapshot', state.snapshot_generation, COUNT_BIG(snapshot.job_id)
|
|
FROM alg.shadow_snapshot_state state
|
|
LEFT JOIN alg.active_job_snapshot snapshot
|
|
ON snapshot.warehouse_id = state.warehouse_id
|
|
AND snapshot.snapshot_generation = state.snapshot_generation
|
|
WHERE state.warehouse_id = '$(WarehouseId)'
|
|
GROUP BY state.snapshot_generation
|
|
UNION ALL
|
|
SELECT 'shadow_inbound_request_snapshot', state.snapshot_generation, COUNT_BIG(snapshot.task_no)
|
|
FROM alg.shadow_snapshot_state state
|
|
LEFT JOIN alg.shadow_inbound_request_snapshot snapshot
|
|
ON snapshot.warehouse_id = state.warehouse_id
|
|
AND snapshot.snapshot_generation = state.snapshot_generation
|
|
WHERE state.warehouse_id = '$(WarehouseId)'
|
|
GROUP BY state.snapshot_generation
|
|
UNION ALL
|
|
SELECT 'shadow_outbound_request_snapshot', state.snapshot_generation, COUNT_BIG(snapshot.stockout_detail_id)
|
|
FROM alg.shadow_snapshot_state state
|
|
LEFT JOIN alg.shadow_outbound_request_snapshot snapshot
|
|
ON snapshot.warehouse_id = state.warehouse_id
|
|
AND snapshot.snapshot_generation = state.snapshot_generation
|
|
WHERE state.warehouse_id = '$(WarehouseId)'
|
|
GROUP BY state.snapshot_generation;
|
|
|
|
SELECT request.session_id, request.blocking_session_id, request.status,
|
|
request.wait_type, request.wait_time, request.command,
|
|
SUBSTRING(sql_text.text,
|
|
(request.statement_start_offset / 2) + 1,
|
|
((CASE request.statement_end_offset
|
|
WHEN -1 THEN DATALENGTH(sql_text.text)
|
|
ELSE request.statement_end_offset
|
|
END - request.statement_start_offset) / 2) + 1) AS statement_text
|
|
FROM sys.dm_exec_requests request
|
|
OUTER APPLY sys.dm_exec_sql_text(request.sql_handle) sql_text
|
|
WHERE request.database_id = DB_ID()
|
|
AND (request.blocking_session_id <> 0 OR sql_text.text LIKE '%alg.%')
|
|
ORDER BY request.session_id;
|
|
GO
|
|
|
|
:out "$(OutputDir)\comparison-detail.txt"
|
|
SET NOCOUNT ON;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
|
|
SELECT decision_type, result_code,
|
|
CASE
|
|
WHEN result_code = 'MATCH' THEN 'VALID_MATCH'
|
|
WHEN result_code = 'DIFFERENT' THEN 'VALID_DIFFERENT'
|
|
WHEN result_code LIKE 'SKIP_%' THEN 'SKIP'
|
|
WHEN result_code LIKE 'ERROR_%' THEN 'ERROR'
|
|
ELSE 'OTHER'
|
|
END AS outcome_group,
|
|
COUNT_BIG(*) AS row_count,
|
|
MIN(created_at) AS first_created_at,
|
|
MAX(created_at) AS last_created_at
|
|
FROM alg.decision_log
|
|
WHERE warehouse_id = '$(WarehouseId)'
|
|
AND created_at >= CONVERT(datetime2(3), '$(StartUtc)', 127)
|
|
GROUP BY decision_type, result_code,
|
|
CASE
|
|
WHEN result_code = 'MATCH' THEN 'VALID_MATCH'
|
|
WHEN result_code = 'DIFFERENT' THEN 'VALID_DIFFERENT'
|
|
WHEN result_code LIKE 'SKIP_%' THEN 'SKIP'
|
|
WHEN result_code LIKE 'ERROR_%' THEN 'ERROR'
|
|
ELSE 'OTHER'
|
|
END
|
|
ORDER BY decision_type, result_code;
|
|
|
|
SELECT decision_id, warehouse_id, decision_type, input_version,
|
|
result_code, reason, created_at
|
|
FROM alg.decision_log
|
|
WHERE warehouse_id = '$(WarehouseId)'
|
|
AND created_at >= CONVERT(datetime2(3), '$(StartUtc)', 127)
|
|
ORDER BY created_at, decision_id;
|
|
|
|
SELECT SUM(CASE WHEN decision_type = 'INBOUND' THEN 1 ELSE 0 END) AS inbound_plan_count,
|
|
SUM(CASE WHEN decision_type = 'INBOUND_COMPARE' THEN 1 ELSE 0 END) AS inbound_compare_count,
|
|
SUM(CASE WHEN decision_type = 'OUTBOUND' THEN 1 ELSE 0 END) AS outbound_plan_count,
|
|
SUM(CASE WHEN decision_type = 'OUTBOUND_COMPARE' THEN 1 ELSE 0 END) AS outbound_compare_count
|
|
FROM alg.decision_log
|
|
WHERE warehouse_id = '$(WarehouseId)'
|
|
AND created_at >= CONVERT(datetime2(3), '$(StartUtc)', 127);
|
|
GO
|
|
|
|
:out "$(OutputDir)\runtime-metrics.txt"
|
|
SET NOCOUNT ON;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
|
|
SELECT warehouse_id, metric_name, bucket_upper_micros, metric_count,
|
|
metric_total_micros, metric_max_micros, flushed_at
|
|
FROM alg.shadow_runtime_metric
|
|
WHERE warehouse_id = '$(WarehouseId)'
|
|
ORDER BY metric_name, bucket_upper_micros;
|
|
|
|
SELECT CASE
|
|
WHEN metric_name LIKE 'SKIP_%' THEN 'SKIP'
|
|
WHEN metric_name LIKE 'ERROR_%' THEN 'ERROR'
|
|
WHEN metric_name = 'ADMITTED' THEN 'ADMITTED'
|
|
ELSE 'HISTOGRAM'
|
|
END AS metric_group,
|
|
SUM(metric_count) AS metric_count,
|
|
MAX(flushed_at) AS latest_flush_at
|
|
FROM alg.shadow_runtime_metric
|
|
WHERE warehouse_id = '$(WarehouseId)'
|
|
GROUP BY CASE
|
|
WHEN metric_name LIKE 'SKIP_%' THEN 'SKIP'
|
|
WHEN metric_name LIKE 'ERROR_%' THEN 'ERROR'
|
|
WHEN metric_name = 'ADMITTED' THEN 'ADMITTED'
|
|
ELSE 'HISTOGRAM'
|
|
END
|
|
ORDER BY metric_group;
|
|
GO
|
|
|
|
:out "$(OutputDir)\inventory-parity.txt"
|
|
SET NOCOUNT ON;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
|
|
WITH legacy_stock AS (
|
|
SELECT stock.stock_id, stock.cargo_space_id, stock.tray_code,
|
|
stock.spare4 AS project_no, stock.product_id AS product_no,
|
|
stock.lot_no, stock.quantity, stock.out_quantity
|
|
FROM dbo.bas_stock stock WITH (NOLOCK)
|
|
INNER JOIN dbo.bas_cargo_space space WITH (NOLOCK)
|
|
ON space.cargo_space_id = stock.cargo_space_id
|
|
WHERE TRY_CONVERT(decimal(38,0), LTRIM(RTRIM(space.warehouse_id))) =
|
|
TRY_CONVERT(decimal(38,0), '$(WarehouseId)')
|
|
), shadow_stock AS (
|
|
SELECT snapshot.stock_id, snapshot.space_id AS cargo_space_id,
|
|
snapshot.tray_code, snapshot.project_no, snapshot.product_no,
|
|
snapshot.lot_no, snapshot.quantity, snapshot.out_quantity
|
|
FROM alg.inventory_item_snapshot snapshot
|
|
INNER JOIN alg.shadow_snapshot_state state
|
|
ON state.warehouse_id = snapshot.warehouse_id
|
|
AND state.snapshot_generation = snapshot.snapshot_generation
|
|
AND state.snapshot_status = 'PUBLISHED'
|
|
WHERE snapshot.warehouse_id = '$(WarehouseId)'
|
|
)
|
|
SELECT SUM(CASE WHEN legacy.stock_id IS NULL THEN 1 ELSE 0 END) AS shadow_only_count,
|
|
SUM(CASE WHEN shadow.stock_id IS NULL THEN 1 ELSE 0 END) AS legacy_only_count,
|
|
SUM(CASE WHEN legacy.stock_id IS NOT NULL AND shadow.stock_id IS NOT NULL
|
|
AND (ISNULL(legacy.cargo_space_id, '') <> ISNULL(shadow.cargo_space_id, '')
|
|
OR ISNULL(legacy.tray_code, '') <> ISNULL(shadow.tray_code, '')
|
|
OR ISNULL(legacy.project_no, '') <> ISNULL(shadow.project_no, '')
|
|
OR ISNULL(legacy.product_no, '') <> ISNULL(shadow.product_no, '')
|
|
OR ISNULL(legacy.lot_no, '') <> ISNULL(shadow.lot_no, '')
|
|
OR ISNULL(legacy.quantity, 0) <> ISNULL(shadow.quantity, 0)
|
|
OR ISNULL(legacy.out_quantity, 0) <> ISNULL(shadow.out_quantity, 0))
|
|
THEN 1 ELSE 0 END) AS differing_row_count,
|
|
COUNT_BIG(*) AS compared_stock_count
|
|
FROM legacy_stock legacy
|
|
FULL OUTER JOIN shadow_stock shadow ON shadow.stock_id = legacy.stock_id;
|
|
GO
|
|
|
|
:out stdout
|
|
SELECT 'EXPORT_SQL_OK' AS export_status, SYSUTCDATETIME() AS completed_at_utc;
|