Versuche und Ergebnisse Umstrukturiert
This commit is contained in:
249
Versuche/Versuch 03/ERP_DOCUMENTATION/EXPORT_COMPLETE_SCHEMA.sql
Normal file
249
Versuche/Versuch 03/ERP_DOCUMENTATION/EXPORT_COMPLETE_SCHEMA.sql
Normal 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 ''
|
||||
Reference in New Issue
Block a user