none
sp_addextendedproperty mit SQL String auslesen RRS feed

  • Frage

  • Ich weiss nicht ob ich es richtig verstanden habe aber ich möchte mit

    sp_addextendedproperty eine Beschreibung zu einer mssql Tabelle hinzu fügen(also funktioniert auch)

    kann ich diese Beschreibung der Tabelle dann wieder mit einem SQL string abfragen?

    sprich ungefähr so

    Liste alle meine mssql Tabellen auf mit der Beschreibung MeineBeschreibung(Spalte) - WertMeinerBeschreibung(Zeile)

    also keine Datenabfrage sondern eher eine struckturelle Abfrage ähnlich

    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE (TABLE_TYPE = 'BASE TABLE') ORDER BY TABLE_NAME

    nur das ich eben zusätzlich meine Beschreibung dazu bekomme

    Sonntag, 20. Oktober 2013 13:42

Antworten

  • Hallo Michael,

    INFORMATION_SCHEMA enthält nur die Basis-Daten (lt. ANSI-SQL), die erweiterten Eigenschaften gehören (u. a.) nicht dazu.

    Die Informationen zu den unterschiedlichen Ebenen kannst Du über die Funktion sys.fn_listextendedproperty abrufen:

    -- Listet die Einträge zu allen Tabellen eines Schemas (dbo) auf
    SELECT objname AS TableName, name AS PropertyName, value AS PropertValue
    FROM sys.fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'TABLE', DEFAULT, DEFAULT, DEFAULT);
    
    -- Listet die Spalten-Einträge zu einer Tabelle (<Tabelle>) auf
    SELECT objname AS ColumnName, name AS PropertyName, value AS PropertValue
    FROM sys.fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'TABLE', '<Tabelle>', 'COLUMN', DEFAULT);

    Gruß Elmar

    • Als Antwort markiert MCDPone Montag, 21. Oktober 2013 05:52
    Sonntag, 20. Oktober 2013 16:04
    Beantworter

Alle Antworten

  • Hallo Michael,

    INFORMATION_SCHEMA enthält nur die Basis-Daten (lt. ANSI-SQL), die erweiterten Eigenschaften gehören (u. a.) nicht dazu.

    Die Informationen zu den unterschiedlichen Ebenen kannst Du über die Funktion sys.fn_listextendedproperty abrufen:

    -- Listet die Einträge zu allen Tabellen eines Schemas (dbo) auf
    SELECT objname AS TableName, name AS PropertyName, value AS PropertValue
    FROM sys.fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'TABLE', DEFAULT, DEFAULT, DEFAULT);
    
    -- Listet die Spalten-Einträge zu einer Tabelle (<Tabelle>) auf
    SELECT objname AS ColumnName, name AS PropertyName, value AS PropertValue
    FROM sys.fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'TABLE', '<Tabelle>', 'COLUMN', DEFAULT);

    Gruß Elmar

    • Als Antwort markiert MCDPone Montag, 21. Oktober 2013 05:52
    Sonntag, 20. Oktober 2013 16:04
    Beantworter
  • Alternativ kannst Du die Werte auch über sys.extended_properties (Transact-SQL) abfragen, nur musst Du dann abhängig von der "class" Dein SQL Statement aufbauen, zum Beispiel für Schema's:

    SELECT *
    FROM sys.extended_properties AS EP
         INNER JOIN
         sys.schemas AS SCH
             ON EP.class_desc = N'SCHEMA'
                AND EP.major_id = SCH.schema_id

    Siehe auch Viewing Extended Properties

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 21. Oktober 2013 07:24