Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Sourcefield,Sourcetabelle und Alias aus einer View auslesen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Salva, 7 November 2013.

  1. Salva

    Salva Neuer Benutzer

    Hallo zusammen,
    ich habe ein dickes Problem, und zwar benötige ich die Informationen einer View (Sourcefield,Sourcetabelle und Alias). Ich weiß, dass ich mit der INFORMATION_SCHEMA.VIEW_COLUMN_USAGE die Sourcefields, Sourcetables erhalte. Jedoch nicht die Aliase. Desweiteren liefert diese Abfrage auch die Felder die im Join benutzt werden. Also wirklich alles und nicht nur die sichtbaren Felder.
    Mit einer anderen Abfrage erhalte ich die Aliase und die richtige Anzahl der Felder, die nur sichtbar sind. Nun möchte ich diese zwei vereinen, jedoch klappt es nicht und ich finde auch nichts dazu.
    Kann mir einer von euch hier helfen?

    Wäre euch sehr dankbar über jede Info.

    Gruß Salva
     
  2. ukulele

    ukulele Datenbank-Guru

    Wenn du das SQL Management Studio nutzt solltest du einfach per Rechtsklick \ Script für... \ ALTER IN neues Abfragefenster den entsprechenden Quellcode der View öffnen und bearbeiten können. Da dürften alle Aliase drinne stehen.
     
  3. Salva

    Salva Neuer Benutzer

    Danke für deine Antwort. Jedoch benötige wir dies programmgesteuert und nicht händisch. Es ist ja so, dass ich es herausbekomme jedoch kann ich die Ergebnisse nicht miteinander mappen.
     
  4. ukulele

    ukulele Datenbank-Guru

    Ufz das ist natürlich fies. In INFORMATION_SCHEMA.VIEWS steht der Code der Views drin. Wenn du nun den Ausgangsspaltennamen hast und danach + AS Schlüsselwort im Code suchst könntest du den Alias parsen. Das geht aber auch nur bedingt wenn die Spalte nicht grade per CASE zusammengebaut wird oder so.
     
  5. ukulele

    ukulele Datenbank-Guru

    http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=117286

    Scheinen sich schon mehrere Leute dran versucht zu haben aber die Argumentation ist stichhaltig, was wenn eine Spalte aus zwei zusammengesetzten Spalaten besteht? Der Alias müsste 1:n Spalten bzw. Spalten und Tabellen oder eben zu CASE Schliefen gemappt werden, das kann nirgendwo automatisch sinnvoll abgebildet sein. Das kann nur aus dem TSQL Code der View hervorgehen.
     
  6. Salva

    Salva Neuer Benutzer

    Ja das stimmt, aber es wäre super wenn es doch ein weg gibt das zu finden. Ich habe ja die Möglichkeit mit zwei verschiedenen Abfragen die Ergebnisse zu erhalten, aber ich die zwei Abfragen nicht in einer bringen. Wenn das machbar wäre, dann wäre es gelöst.
     
  7. ukulele

    ukulele Datenbank-Guru

    Der einzige Weg ist den TSQL Code der View selbst zu interpretieren, das ist sicherlich nicht leicht aber die DB schafft das ja auch.
     
  8. Salva

    Salva Neuer Benutzer

    Wie meinst du das? Wie soll das gehen?
     
  9. ukulele

    ukulele Datenbank-Guru

    Na du baust einen Parser der nach Zeichen in dem Quellcode sucht (z.B. AS <spaltenname>, ) und anhand derer bestimmt was vor dem Spaltenalias steht und somit der Ursprung der Spalte ist. Ist natürlich sehr schwer weil es viele Möglichkeiten gibt aber nichts anderes macht doch eine Datenbank mit einer TSQL Eingabe, sie sucht nach TSQL Befehlen und das dazwischen sind dann Spalten, Aliase oder was auch immer.
    http://de.wikipedia.org/wiki/Parser
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden