105 lines
3.1 KiB
Transact-SQL
105 lines
3.1 KiB
Transact-SQL
-- Database Diagnostics and Cleanup Script
|
|
-- Run this on your testing server to identify and fix seeding issues
|
|
|
|
-- ===================================================
|
|
-- STEP 1: Check for corrupted/malformed SKUs
|
|
-- ===================================================
|
|
PRINT 'Checking for corrupted inventory items...'
|
|
SELECT
|
|
Id,
|
|
SKU,
|
|
Name,
|
|
CompanyId,
|
|
IsDeleted,
|
|
CreatedAt
|
|
FROM InventoryItems
|
|
WHERE SKU LIKE '(-PWD-%' OR SKU LIKE '%-PWD-%' AND SKU NOT LIKE '[A-Z]%'
|
|
ORDER BY CreatedAt DESC
|
|
|
|
-- ===================================================
|
|
-- STEP 2: Check for duplicate SKUs
|
|
-- ===================================================
|
|
PRINT 'Checking for duplicate SKUs...'
|
|
SELECT
|
|
SKU,
|
|
COUNT(*) as DuplicateCount,
|
|
STRING_AGG(CAST(Id AS VARCHAR), ', ') as IDs
|
|
FROM InventoryItems
|
|
WHERE IsDeleted = 0
|
|
GROUP BY SKU
|
|
HAVING COUNT(*) > 1
|
|
|
|
-- ===================================================
|
|
-- STEP 3: Check companies and their codes
|
|
-- ===================================================
|
|
PRINT 'Checking company data...'
|
|
SELECT
|
|
Id,
|
|
CompanyName,
|
|
CompanyCode,
|
|
IsActive,
|
|
IsDeleted,
|
|
SubscriptionPlan
|
|
FROM Companies
|
|
WHERE IsDeleted = 0
|
|
ORDER BY Id
|
|
|
|
-- ===================================================
|
|
-- STEP 4: Check inventory count per company
|
|
-- ===================================================
|
|
PRINT 'Inventory items per company...'
|
|
SELECT
|
|
c.Id as CompanyId,
|
|
c.CompanyName,
|
|
c.CompanyCode,
|
|
COUNT(i.Id) as InventoryItemCount
|
|
FROM Companies c
|
|
LEFT JOIN InventoryItems i ON c.Id = i.CompanyId AND i.IsDeleted = 0
|
|
WHERE c.IsDeleted = 0
|
|
GROUP BY c.Id, c.CompanyName, c.CompanyCode
|
|
ORDER BY c.Id
|
|
|
|
-- ===================================================
|
|
-- CLEANUP OPTIONS (commented out for safety)
|
|
-- Uncomment the section you need AFTER reviewing the results above
|
|
-- ===================================================
|
|
|
|
-- OPTION A: Delete ALL corrupted/malformed inventory items
|
|
/*
|
|
DELETE FROM InventoryItems
|
|
WHERE SKU LIKE '(-PWD-%' OR (SKU LIKE '%-PWD-%' AND SKU NOT LIKE '[A-Z]%')
|
|
PRINT 'Deleted corrupted inventory items'
|
|
*/
|
|
|
|
-- OPTION B: Delete ALL inventory items for a specific company (to re-seed)
|
|
/*
|
|
DECLARE @CompanyId INT = 1 -- Change this to your company ID
|
|
DELETE FROM InventoryItems WHERE CompanyId = @CompanyId
|
|
PRINT 'Deleted all inventory items for company ' + CAST(@CompanyId AS VARCHAR)
|
|
*/
|
|
|
|
-- OPTION C: Delete ALL seed data for a complete fresh start (DANGER!)
|
|
/*
|
|
-- WARNING: This deletes ALL business data but keeps users and companies
|
|
DELETE FROM JobPhotos
|
|
DELETE FROM JobNotes
|
|
DELETE FROM JobItems
|
|
DELETE FROM Jobs
|
|
DELETE FROM QuoteItems
|
|
DELETE FROM Quotes
|
|
DELETE FROM InventoryTransactions
|
|
DELETE FROM InventoryItems
|
|
DELETE FROM Equipment
|
|
DELETE FROM MaintenanceRecords
|
|
DELETE FROM CatalogItems
|
|
DELETE FROM PricingTiers
|
|
DELETE FROM CompanyOperatingCosts
|
|
DELETE FROM Customers
|
|
PRINT 'All seed data deleted - ready for fresh seeding'
|
|
*/
|
|
|
|
-- ===================================================
|
|
-- STEP 5: Verify database is ready for seeding
|
|
-- ===================================================
|
|
PRINT 'Verification complete. Review results above before running cleanup.'
|