/* Read-only validation queries for a SQL Server 2016 installation. */ SET NOCOUNT ON; SELECT CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)) AS product_version, DB_NAME() AS database_name; SELECT o.type_desc, COUNT(*) AS object_count FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = N'alg' AND o.type IN ('U', 'V', 'P') GROUP BY o.type_desc ORDER BY o.type_desc; SELECT installed.object_kind, installed.object_name FROM ( SELECT o.type_desc AS object_kind, o.name AS object_name FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = N'alg' AND o.type IN ('U', 'V', 'P') UNION ALL SELECT 'INDEX' AS object_kind, i.name AS object_name FROM sys.indexes i JOIN sys.objects o ON o.object_id = i.object_id JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = N'alg' AND i.name IS NOT NULL ) installed ORDER BY installed.object_kind, installed.object_name; SELECT warehouse_id, COUNT_BIG(*) AS excluded_from_algorithm_topology_count, SUM(CASE WHEN group_coding_no IS NULL OR LTRIM(RTRIM(group_coding_no)) = '' THEN 1 ELSE 0 END) AS missing_lane_code_count, SUM(CASE WHEN TRY_CONVERT(int, group_coding) IS NULL THEN 1 ELSE 0 END) AS invalid_depth_count FROM dbo.bas_cargo_space WHERE group_coding_no IS NULL OR LTRIM(RTRIM(group_coding_no)) = '' OR TRY_CONVERT(int, group_coding) IS NULL GROUP BY warehouse_id ORDER BY warehouse_id; SELECT warehouse_id, COUNT(*) AS space_state_count, SUM(CASE WHEN space_status = 2 THEN 1 ELSE 0 END) AS full_space_count, SUM(CASE WHEN inbound_available = 1 THEN 1 ELSE 0 END) AS inbound_available_count, SUM(CASE WHEN pending_outbound = 1 THEN 1 ELSE 0 END) AS pending_outbound_space_count, SUM(CASE WHEN has_gap = 1 THEN 1 ELSE 0 END) AS gap_space_count, SUM(CASE WHEN tray_conflict = 1 OR project_conflict = 1 OR product_conflict = 1 THEN 1 ELSE 0 END) AS conflict_space_count FROM alg.v_space_state GROUP BY warehouse_id ORDER BY warehouse_id; SELECT warehouse_id, COUNT(*) AS topology_count FROM alg.space_topology GROUP BY warehouse_id ORDER BY warehouse_id; SELECT warehouse_id, COUNT(*) AS inventory_detail_snapshot_count, COUNT(DISTINCT space_id) AS inventory_space_snapshot_count, MAX(synchronized_at) AS last_inventory_synchronized_at FROM alg.inventory_item_snapshot GROUP BY warehouse_id ORDER BY warehouse_id; ;WITH warehouse_floors AS ( SELECT DISTINCT warehouse_id, the_floor AS floor_no FROM dbo.bas_cargo_space ), role_counts AS ( SELECT cargo.warehouse_id, cargo.the_floor AS floor_no, SUM(CASE WHEN role.role = 'RELOCATION_BUFFER' THEN 1 ELSE 0 END) AS relocation_buffer_count, SUM(CASE WHEN role.role = 'OUTBOUND_BUFFER' THEN 1 ELSE 0 END) AS outbound_buffer_count, SUM(CASE WHEN role.role = 'PROTECTED_CORE' THEN 1 ELSE 0 END) AS protected_core_count FROM dbo.bas_cargo_space cargo LEFT JOIN alg.space_role role ON role.space_id = cargo.cargo_space_id GROUP BY cargo.warehouse_id, cargo.the_floor ) SELECT floors.warehouse_id, floors.floor_no, ISNULL(counts.relocation_buffer_count, 0) AS relocation_buffer_count, CAST(4 AS int) AS relocation_buffer_target, CASE WHEN ISNULL(counts.relocation_buffer_count, 0) >= 4 THEN 0 ELSE 4 - ISNULL(counts.relocation_buffer_count, 0) END AS relocation_buffer_shortage, ISNULL(counts.outbound_buffer_count, 0) AS outbound_buffer_count, ISNULL(counts.protected_core_count, 0) AS protected_core_count FROM warehouse_floors floors LEFT JOIN role_counts counts ON counts.warehouse_id = floors.warehouse_id AND counts.floor_no = floors.floor_no ORDER BY floors.warehouse_id, floors.floor_no; SELECT cargo.warehouse_id, cargo.the_floor AS floor_no, role.space_id, role.role, role.updated_at FROM alg.space_role role JOIN dbo.bas_cargo_space cargo ON cargo.cargo_space_id = role.space_id WHERE role.role IN ('RELOCATION_BUFFER', 'OUTBOUND_BUFFER', 'PROTECTED_CORE') ORDER BY cargo.warehouse_id, cargo.the_floor, role.role, role.space_id; SELECT warehouse_id, COUNT(*) AS lane_state_count, SUM(CASE WHEN pending_outbound = 1 THEN 1 ELSE 0 END) AS pending_lane_count, SUM(CASE WHEN has_gap = 1 THEN 1 ELSE 0 END) AS gap_lane_count FROM alg.lane_state GROUP BY warehouse_id ORDER BY warehouse_id; SELECT 'bas_cargo_space' AS table_name, COUNT_BIG(*) AS row_count, CHECKSUM_AGG(BINARY_CHECKSUM(cargo_space_id, warehouse_id, group_coding_no, group_coding, status, tray_code)) AS row_checksum FROM dbo.bas_cargo_space UNION ALL SELECT 'bas_stock', COUNT_BIG(*), CHECKSUM_AGG(BINARY_CHECKSUM(stock_id, cargo_space_id, tray_code, spare4, product_id, lot_no, in_date)) FROM dbo.bas_stock UNION ALL SELECT 'mydo_job', COUNT_BIG(*), CHECKSUM_AGG(BINARY_CHECKSUM(job_id, status, task_no, tray_code, cargo_space_id, target_cargo_space_id, in_or_out, warehouse_id)) FROM dbo.mydo_job; ;WITH pallet_details AS ( SELECT cargo_space_id, MIN(NULLIF(LTRIM(RTRIM(tray_code)), '')) AS tray_code, MIN(NULLIF(LTRIM(RTRIM(spare4)), '')) AS project_no, MIN(NULLIF(LTRIM(RTRIM(product_id)), '')) AS first_product_no, MAX(NULLIF(LTRIM(RTRIM(product_id)), '')) AS last_product_no, COUNT(DISTINCT NULLIF(LTRIM(RTRIM(product_id)), '')) AS product_count FROM dbo.bas_stock GROUP BY cargo_space_id ) SELECT TOP 5 state.space_id, details.tray_code, details.project_no, details.first_product_no, details.last_product_no, details.product_count FROM pallet_details details JOIN alg.v_space_state state ON state.space_id = details.cargo_space_id WHERE details.product_count > 1 AND state.space_status = '2' AND state.stock_tray_count = 1 AND state.stock_project_count = 1 AND state.tray_conflict = 0 AND state.project_conflict = 0 AND state.pending_outbound = 0 AND state.reserved = 0 AND state.has_gap = 0 ORDER BY state.space_id; SELECT space_id, warehouse_id, lane_code, depth, space_status, role, tray_conflict, project_conflict, product_conflict, pending_outbound, reserved, has_gap, inbound_available FROM alg.v_space_state WHERE tray_conflict = 1 OR project_conflict = 1 OR product_conflict = 1 OR pending_outbound = 1 OR has_gap = 1 ORDER BY warehouse_id, lane_code, depth; SELECT reservation_id, warehouse_id, lane_code, space_id, project_no, status, created_at, released_at FROM alg.reservation ORDER BY created_at DESC; SELECT lock_id, request_id, warehouse_id, floor_no, status, created_at, released_at FROM alg.deep_workflow_lock ORDER BY created_at DESC; SELECT warehouse_id, lane_code, topology_dirty, reason_mask, change_count, enqueued_at, last_changed_at FROM alg.dirty_lane_queue ORDER BY last_changed_at, warehouse_id, lane_code; SELECT workflow_id, request_id, stockout_detail_id, warehouse_id, source_stock_id, selected_tray_code, source_space_id, lane_code, floor_no, exit_id, status, current_step, total_steps, created_at, updated_at, completed_at FROM alg.outbound_workflow WHERE status <> 'COMPLETED' ORDER BY created_at, workflow_id; SELECT step.workflow_id, step.assignment_id, step.phase, step.source_space_id, step.target_space_id, step.workflow_step, step.workflow_total_steps, step.depends_on_assignment_id, step.stock_id, step.tray_code, step.status, step.wms_job_id, step.created_at, step.started_at, step.at_exit_at, step.completed_at FROM alg.outbound_workflow_step step JOIN alg.outbound_workflow workflow ON workflow.workflow_id = step.workflow_id WHERE workflow.status <> 'COMPLETED' OR step.status <> 'COMPLETED' ORDER BY step.workflow_id, step.workflow_step; SELECT mode.warehouse_id, mode.requested_enabled, mode.effective_state, mode.status_reason, mode.mode_version, mode.updated_by, mode.updated_at FROM alg.tidy_mode mode ORDER BY mode.warehouse_id; SELECT queue.warehouse_id, queue.lane_code, queue.dirty_version, queue.queue_status, queue.reason_mask, queue.change_count, queue.last_dirty_at, queue.claimed_version, queue.claimed_by, queue.claimed_at, queue.lease_expires_at, queue.last_error FROM alg.tidy_lane_queue queue ORDER BY queue.last_dirty_at, queue.warehouse_id, queue.lane_code; SELECT workflow.workflow_id, workflow.warehouse_id, workflow.lane_code, workflow.origin, workflow.candidate_type, workflow.source_space_id, workflow.target_space_id, workflow.stock_id, workflow.tray_code, workflow.status, workflow.claimed_dirty_version, workflow.vehicle_id, workflow.wcs_task_id, workflow.status_reason, workflow.created_at, workflow.updated_at, workflow.dispatched_at, workflow.completed_at FROM alg.tidy_workflow workflow WHERE workflow.completed_at IS NULL OR workflow.status IN ('PAUSED_RECOVERY', 'CANCELLED_RECONCILED') ORDER BY workflow.created_at, workflow.workflow_id; SELECT step.workflow_id, step.step_id, step.step_no, step.source_space_id, step.target_space_id, step.stock_id, step.tray_code, step.status, step.wms_job_id, step.wcs_task_id, step.expected_event_stage, step.created_at, step.started_at, step.completed_at FROM alg.tidy_step step JOIN alg.tidy_workflow workflow ON workflow.workflow_id = step.workflow_id WHERE workflow.completed_at IS NULL OR step.completed_at IS NULL ORDER BY step.workflow_id, step.step_no; SELECT lock.workflow_id, lock.warehouse_id, lock.resource_type, lock.resource_id, lock.status, lock.locked_at, lock.released_at FROM alg.tidy_space_lock lock WHERE lock.status = 'ACTIVE' ORDER BY lock.warehouse_id, lock.resource_type, lock.resource_id; SELECT event.workflow_id, event.step_id, event.wcs_task_id, event.event_stage, COUNT(*) AS callback_count, MIN(event.received_at) AS first_received_at, MAX(event.received_at) AS last_received_at FROM alg.tidy_callback_event event GROUP BY event.workflow_id, event.step_id, event.wcs_task_id, event.event_stage HAVING COUNT(*) > 1 ORDER BY event.workflow_id, event.step_id, event.event_stage; SELECT workflow.origin, workflow.status, COUNT(*) AS workflow_count FROM alg.tidy_workflow workflow GROUP BY workflow.origin, workflow.status ORDER BY workflow.origin, workflow.status;