Versuche und Ergebnisse Umstrukturiert

This commit is contained in:
2026-02-19 20:16:26 +01:00
parent a5d2f5490c
commit 9b95958eeb
108 changed files with 1427 additions and 7786 deletions

View File

@@ -0,0 +1,249 @@
-- ============================================================================
-- c-entron.NET - Complete Database Schema Export Script
-- ============================================================================
-- This script exports the complete database schema including:
-- - All tables with column definitions
-- - Data types and constraints
-- - Nullable flags and defaults
-- - Foreign key relationships
-- - Index information
--
-- Generated: 2025-11-11
-- ============================================================================
SET NOCOUNT ON
-- ============================================================================
-- SECTION 1: TABLE SUMMARY - COUNT OF TABLES AND COLUMNS
-- ============================================================================
PRINT '=== SECTION 1: DATABASE OVERVIEW ==='
PRINT ''
PRINT 'Total Tables: '
SELECT COUNT(DISTINCT TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo'
PRINT ''
PRINT 'Total Columns: '
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo'
PRINT ''
PRINT 'Tables by Column Count:'
SELECT TOP 50
TABLE_NAME,
COUNT(*) AS ColumnCount
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
GROUP BY TABLE_NAME
ORDER BY ColumnCount DESC
PRINT ''
PRINT '=== SECTION 2: COMPLETE TABLE AND COLUMN SCHEMA ==='
PRINT ''
-- ============================================================================
-- SECTION 2: COMPLETE SCHEMA WITH ALL COLUMNS
-- ============================================================================
SELECT
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━' AS 'SCHEMA'
UNION ALL
SELECT 'TABLE: ' + t.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_SCHEMA = 'dbo'
ORDER BY t.TABLE_NAME
UNION ALL
SELECT
' ' +
COLUMN_NAME +
' [' + DATA_TYPE +
CASE
WHEN CHARACTER_MAXIMUM_LENGTH > 0
THEN '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(20)) + ')'
WHEN CHARACTER_MAXIMUM_LENGTH = -1
THEN '(MAX)'
ELSE ''
END +
'] ' +
CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END +
CASE WHEN COLUMN_DEFAULT IS NOT NULL THEN ' = ' + COLUMN_DEFAULT ELSE '' END AS 'SCHEMA'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME, ORDINAL_POSITION
-- ============================================================================
-- SECTION 3: FOREIGN KEY RELATIONSHIPS
-- ============================================================================
PRINT ''
PRINT '=== SECTION 3: FOREIGN KEY RELATIONSHIPS ==='
PRINT ''
SELECT
'Table: ' + OBJECT_NAME(fk.parent_object_id) AS 'Relationship',
(SELECT NAME FROM sys.columns WHERE object_id = fk.parent_object_id AND column_id = fk.parent_column_id) AS 'FK Column',
(SELECT NAME FROM sys.tables WHERE object_id = fk.referenced_object_id) AS 'References Table',
(SELECT NAME FROM sys.columns WHERE object_id = fk.referenced_object_id AND column_id = fk.referenced_column_id) AS 'References Column'
FROM sys.foreign_keys fk
WHERE fk.database_id = DB_ID()
ORDER BY OBJECT_NAME(fk.parent_object_id), fk.name
-- ============================================================================
-- SECTION 4: PRIMARY KEYS
-- ============================================================================
PRINT ''
PRINT '=== SECTION 4: PRIMARY KEY DEFINITIONS ==='
PRINT ''
SELECT
t.name AS 'Table Name',
c.name AS 'Primary Key Column',
i.name AS 'Index Name',
i.type_desc AS 'Index Type'
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id AND i.is_primary_key = 1
JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
JOIN sys.columns c ON t.object_id = c.object_id AND ic.column_id = c.column_id
WHERE t.schema_id = SCHEMA_ID('dbo')
ORDER BY t.name
-- ============================================================================
-- SECTION 5: ALL INDEXES
-- ============================================================================
PRINT ''
PRINT '=== SECTION 5: INDEX DEFINITIONS ==='
PRINT ''
SELECT
SCHEMA_NAME(t.schema_id) AS 'Schema',
t.name AS 'Table Name',
i.name AS 'Index Name',
i.type_desc AS 'Index Type',
STRING_AGG(c.name, ', ') WITHIN GROUP (ORDER BY ic.key_ordinal) AS 'Columns'
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
JOIN sys.columns c ON t.object_id = c.object_id AND ic.column_id = c.column_id
WHERE t.schema_id = SCHEMA_ID('dbo')
GROUP BY SCHEMA_NAME(t.schema_id), t.name, i.name, i.type_desc
ORDER BY t.name, i.name
-- ============================================================================
-- SECTION 6: TABLES BY FUNCTIONAL AREA (based on naming patterns)
-- ============================================================================
PRINT ''
PRINT '=== SECTION 6: TABLES GROUPED BY FUNCTIONAL AREA ==='
PRINT ''
SELECT
CASE
WHEN TABLE_NAME LIKE 'Account%' THEN 'Account Management'
WHEN TABLE_NAME LIKE 'Artikel%' OR TABLE_NAME LIKE 'ARTIK%' THEN 'Articles & Products'
WHEN TABLE_NAME IN ('AngKopf','AngPos','AufKopf','AufPos','BestKopf','BestPos') THEN 'Orders & Sales'
WHEN TABLE_NAME IN ('RechKopf','RechPos','LiefKopf','LiefPos') THEN 'Transactions (Orders/Invoices)'
WHEN TABLE_NAME LIKE 'hlpdsk_%' OR TABLE_NAME LIKE 'Ticket%' THEN 'Helpdesk & Ticketing'
WHEN TABLE_NAME LIKE 'AssetManagement%' THEN 'Asset Management'
WHEN TABLE_NAME LIKE 'EDI%' THEN 'EDI & Integration'
WHEN TABLE_NAME LIKE 'Inventur%' OR TABLE_NAME LIKE 'Lager%' THEN 'Inventory & Warehouse'
WHEN TABLE_NAME IN ('Personal','Abteilung','Arbeitsplatz','PersonalUrlaub') THEN 'Employee & HR'
WHEN TABLE_NAME LIKE 'BookKeeping%' OR TABLE_NAME LIKE 'Buchhalter%' THEN 'Financial & Accounting'
WHEN TABLE_NAME LIKE 'Campaign%' OR TABLE_NAME LIKE 'CRM%' THEN 'CRM & Campaigns'
WHEN TABLE_NAME LIKE 'CentronDMS%' OR TABLE_NAME LIKE 'Document%' THEN 'Document Management'
WHEN TABLE_NAME LIKE 'Report%' OR TABLE_NAME LIKE 'Cache%' OR TABLE_NAME LIKE 'Statistic%' THEN 'Reporting & Analytics'
WHEN TABLE_NAME LIKE 'Web%' OR TABLE_NAME LIKE 'WEB%' THEN 'Web & Portal'
WHEN TABLE_NAME LIKE 'Centron%' OR TABLE_NAME LIKE 'Application%' OR TABLE_NAME LIKE 'Module%' THEN 'System & Configuration'
ELSE 'Other'
END AS 'Functional Area',
TABLE_NAME AS 'Table Name',
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = INFORMATION_SCHEMA.TABLES.TABLE_NAME) AS 'Column Count'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY 'Functional Area', 'Table Name'
-- ============================================================================
-- SECTION 7: STANDARD COLUMNS AUDIT
-- ============================================================================
PRINT ''
PRINT '=== SECTION 7: STANDARD COLUMNS COMPLIANCE AUDIT ==='
PRINT ''
PRINT 'Tables with all required standard columns (I3D, CreatedByI3D, CreatedDate, ChangedByI3D, ChangedDate):'
PRINT ''
SELECT DISTINCT
t.TABLE_NAME,
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'I3D') THEN 'Yes' ELSE 'NO' END AS 'Has_I3D',
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'CreatedByI3D') THEN 'Yes' ELSE 'NO' END AS 'Has_CreatedByI3D',
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'CreatedDate') THEN 'Yes' ELSE 'NO' END AS 'Has_CreatedDate',
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'ChangedByI3D') THEN 'Yes' ELSE 'NO' END AS 'Has_ChangedByI3D',
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'ChangedDate') THEN 'Yes' ELSE 'NO' END AS 'Has_ChangedDate',
CASE WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = t.TABLE_NAME AND c.COLUMN_NAME = 'IsDeleted') THEN 'Yes' ELSE 'NO' END AS 'Has_IsDeleted'
FROM INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_SCHEMA = 'dbo'
ORDER BY t.TABLE_NAME
-- ============================================================================
-- SECTION 8: TABLES WITH EXTENDED/VERSION VARIANTS
-- ============================================================================
PRINT ''
PRINT '=== SECTION 8: TABLES WITH VERSION AND EXTENDED VARIANTS ==='
PRINT ''
SELECT DISTINCT
CASE
WHEN TABLE_NAME LIKE '%Versions' THEN SUBSTRING(TABLE_NAME, 1, LEN(TABLE_NAME) - 8) + ' (Versions)'
WHEN TABLE_NAME LIKE '%Erweitert' THEN SUBSTRING(TABLE_NAME, 1, LEN(TABLE_NAME) - 8) + ' (Extended)'
ELSE TABLE_NAME
END AS 'Base Table',
TABLE_NAME AS 'Actual Table Name',
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = INFORMATION_SCHEMA.TABLES.TABLE_NAME) AS 'Columns'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo' AND (TABLE_NAME LIKE '%Versions' OR TABLE_NAME LIKE '%Erweitert')
ORDER BY 'Base Table', 'Actual Table Name'
-- ============================================================================
-- SECTION 9: COLUMN NAME PATTERNS ANALYSIS
-- ============================================================================
PRINT ''
PRINT '=== SECTION 9: FOREIGN KEY PATTERN ANALYSIS ==='
PRINT ''
PRINT 'Columns ending with I3D (presumed foreign keys):'
PRINT ''
SELECT
TABLE_NAME,
COLUMN_NAME,
COUNT(*) OVER (PARTITION BY COLUMN_NAME) AS 'Times Used'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo' AND COLUMN_NAME LIKE '%I3D'
ORDER BY COLUMN_NAME, TABLE_NAME
-- ============================================================================
-- SECTION 10: DATA TYPE DISTRIBUTION
-- ============================================================================
PRINT ''
PRINT '=== SECTION 10: DATA TYPE DISTRIBUTION ==='
PRINT ''
SELECT
DATA_TYPE,
COUNT(*) AS 'Occurrences',
COUNT(DISTINCT TABLE_NAME) AS 'Tables Using This Type'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
GROUP BY DATA_TYPE
ORDER BY 'Occurrences' DESC
-- ============================================================================
-- END OF SCHEMA EXPORT
-- ============================================================================
PRINT ''
PRINT '=== EXPORT COMPLETE ==='
PRINT 'Export timestamp: ' + FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss')
PRINT ''