Get-EulTableSchema #
ÜBERSICHT #
Liefert die Spalten-Definition einer EULANDA-Tabelle als PSObject-Array.
SYNTAX #
Get-EulTableSchema [-Conn] <__ComObject> [-Table] <string> [<CommonParameters>]
BESCHREIBUNG #
Liest die Schema-Information einer SQL-Server-Tabelle: Spaltenname, Datentyp, Größe, Nullable, Primärschlüssel-Flag, Identity-Flag. Wird vom Excel-Pipeline-Layer (Tier 2) als Basis für Type-Mapping (SQL → Excel) und Update-by-Key-Strategie genutzt.
Reflection läuft über zwei Queries:
- SELECT TOP 0 für ADO-Field-Definitionen (Name/Type/Size/Nullable).
- EIN sys.*-Catalog-Query für PK + Identity + Computed (sys.columns + sys.indexes + sys.index_columns). Die Catalog-Views sind dünne 1:1-Abbildungen der Storage-Tables, der Optimierer plant das in O(1) pro Spalte.
Vorgänger-Version benutzte INFORMATION_SCHEMA mit getrennten Queries für PK/Identity/Computed (4 Roundtrips, ~4s gegen lokale DB). Der Zwischenversuch “alles in einer INFORMATION_SCHEMA-Query mit EXISTS” war eine harte Regression (30s gegen lokale DB), weil INFORMATION_SCHEMA- Views pro Zeile materialisieren mussten. sys.* hat dieses Problem nicht und erreicht das Optimierungsziel ohne Regressionsrisiko.
Tabellenname wird NICHT validiert – Plugin-Autor ist für Vertrauens- würdigkeit der Eingabe verantwortlich (kein User-Input direkt durch- reichen). Eulanda-Plugin-Kontext, kein End-User-SQL.
PARAMETER #
-Conn #
Type: __ComObject
ADODB.Connection-Objekt zur EULANDA-Datenbank. Caller-owns-Connection, wird NICHT geschlossen.
-Table #
Type: string
Tabellenname (z.B. ‘Artikel’, ‘Adresse’, ‘RechnungPos’).
AUSGABEN #
[PSCustomObject[]] mit Eigenschaften pro Spalte:
Name (string) Spaltenname Type (int) ADODB.DataTypeEnum Wert TypeName (string) Kurzer Type-Name (Int / String / Date / …) Size (int) Maximale Größe (bei String/Binary) Precision (int) Gesamtzahl Stellen (bei Decimal/Numeric) NumericScale (int) Nachkommastellen (bei Decimal/Numeric) IsNullable (bool) IsKey (bool) Teil des Primärschlüssels IsIdentity (bool) Auto-Increment-Spalte IsComputed (bool) Berechnete Spalte (kein INSERT/UPDATE möglich)
BEISPIELE #
$conn = Get-ConnByUdl -Udl 'C:\Eulanda\EULANDA_1 Mustermann.udl'
$cols = Get-EulTableSchema -Conn $conn -Table 'Artikel'
$cols | Where-Object IsKey | Select-Object Name, TypeName
# Liefert die PK-Spalten
# Update-by-Key bestimmen
$key = (Get-EulTableSchema -Conn $conn -Table 'Artikel' |
Where-Object IsKey | Select-Object -First 1).Name
HINWEISE #
Phase 4 Tier 1 – DB-Bausteine für Excel-Pipeline und allgemeine Reflection (auch für Reporting-/ABO-Skripte ohne Excel-Bezug nutzbar).