Tabellen einer Sicht unter SQL Server 2008

Hallo zusammen,

ich steh vor einem kleinen Problem und komm nicht weiter.
Gibt es eine einfach Möglichkeit mit sql Mitteln die Tabellen einer Sicht(View) auszugeben? Also die Tabellen auf welche die Sicht zugreift?
Ich habe es schon über die Systemsicht Information_Schema.View_Table_Usage versucht, allerdings liefert diese nur die Tabellen innerhalb der gleichen Datenbank.
Gibt es ne Möglichkeit auch die Tabellen anderer Datenbanken auf dem gleichen Server zu bekommen?
Vielen Dank

Gruß

Vortex

Hi,

select VIEW\_DEFINITION from INFORMATION\_SCHEMA.Views

Gruss
Joey

Hallo Vortex,

um über alle Datenbanken abzufragen, ist die Systemprozedur sp_MSForEachDB hilfreich. Folgendes Skript sollte funktionieren:

-- Temp. Tabelle zum Speichern der ermittelten Werte
CREATE TABLE #tmpViewTables
(Table\_Catalog nvarchar(255), Table\_Schema nvarchar(255), Table\_Name nvarchar(255));

-- Schleife über alle DBs
-- ? ist Platzhalter für die jeweilige DB
EXEC sp\_MSForEachDB 'USE [?]; 
 -- Speichern der gewünschten Werte in temp. Tabelle
 INSERT INTO #tmpViewTables 
 SELECT Table\_Catalog, Table\_Schema, Table\_Name
 FROM Information\_Schema.View\_Table\_Usage
 WHERE View\_Name = ''''; -- doppeltes Hochkomma beachten
';

-- Ergebnisse anzeigen
SELECT \* FROM #tmpViewTables;

-- Temp. Tabelle löschen
DROP TABLE #tmpViewTables;

Peter

Hallo,

Vielen Dank erstmal für die schnelle Hilfe. :smile:

Peters Vorschlag funktioniert super, allerdings bekomme ich trotzdem nur Tabellen in der Datenbank des Views. Also sobald in einem View eine Tabelle aus einer zweiten Datenbank verwendet wird, kann ich diese nicht abfragen.
Über VIEW_DEFINITION von INFORMATION_SCHEMA.Views bekomme ich den ganzen Create Befehl des Views, wo natürlich auch die übrigen Tabellen enthalten sind.
Hier könnte ich die Tabellen natürlich auch umständiglich rauslesen, aber gibt es nicht noch eine einfachere Methode?

Danke nochmal!

Gruß

Vortex