Get Eul Table Schema
Zuletzt geändert: 26.05.2026 10:46

Übersicht

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:

  1. SELECT TOP 0 für ADO-Field-Definitionen (Name/Type/Size/Nullable).
  2. 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).