Sourcefield,Sourcetabelle und Alias aus einer View auslesen

Salva

Neuer Benutzer
Beiträge
4
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
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
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.
 

Salva

Neuer Benutzer
Beiträge
4
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.
 

ukulele

Datenbank-Guru
Beiträge
4.394
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.
 

ukulele

Datenbank-Guru
Beiträge
4.394
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.
 

Salva

Neuer Benutzer
Beiträge
4
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.
 

ukulele

Datenbank-Guru
Beiträge
4.394
Der einzige Weg ist den TSQL Code der View selbst zu interpretieren, das ist sicherlich nicht leicht aber die DB schafft das ja auch.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
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
 
Oben