Dieser Artikel stellt vier Möglichkeiten zum Zurückgeben einer Liste benutzerdefinierter Ansichten in einer SQL Server-Datenbank vor.
Wenn Sie nur Systemansichten oder beide benutzerdefinierte und sehen möchten Systemansichten finden Sie unter Unterschied zwischen sys.views, sys.system_views und sys.all_views in SQL Server.
Option 1 – Die VIEWS-Informationsschemaansicht
Sie können die VIEWS
verwenden information schema view, um eine Liste aller benutzerdefinierten Ansichten in einer Datenbank zu erhalten.
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Ergebnis:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Gib die Definition der Ansicht zurück
Die INFORMATION_SCHEMA.VIEWS
view hat auch eine VIEW_DEFINITION
Spalte, sodass Sie bei Bedarf problemlos die Definition jeder Ansicht zurückgeben können.
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Option 2 – Die sys.views-Systemkatalogansicht
Eine andere Möglichkeit, eine Liste von Ansichten zurückzugeben, besteht darin, sys.views
abzufragen Systemkatalogansicht.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Ergebnis:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Gib die Definition der Ansicht zurück
Die sys.view
Ansicht enthält keine Spalte für die Definition des Objekts. Wenn Sie die Definition jeder Ansicht zurückgeben möchten, können Sie sie mit sys.sql_modules
verbinden Systemansicht.
Beispiel:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Option 3 – Die sys.objects-Systemkatalogansicht
Eine andere Möglichkeit, eine Liste von Ansichten zurückzugeben, besteht darin, sys.objects
abzufragen Systemkatalogansicht.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Ergebnis:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Der Typ V
steht für „Ansicht“. Eine andere Möglichkeit, dies zu tun, ist das Filtern nach type_desc
Spalte:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Gib die Definition der Ansicht zurück
Die sys.objects
Ansicht enthält keine Spalte für die Definition des Objekts. Wenn Sie die Definition jeder Ansicht zurückgeben möchten, können Sie sie mit sys.sql_modules
verbinden Systemansicht.
Beispiel:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Option 4 – Die gespeicherte Prozedur sp_tables
Die sp_tables
gespeicherte Prozedur gibt eine Liste von Objekten zurück, die in der aktuellen Umgebung abgefragt werden können. Dazu gehören alle Tabellen oder Ansichten mit Ausnahme von Synonymobjekten.
Sie können die Ergebnisse mit @table_type
auf nur Ansichten einschränken Parameter. Sie können es auch auf einen bestimmten Eigentümer oder Katalog eingrenzen.
Das Ausführen des folgenden Codes gibt alle Ansichten in der aktuellen Datenbank zurück – einschließlich Systemansichten.
EXEC sp_tables @table_type = "'VIEW'";
Ich werde die Ergebnisse hier nicht präsentieren, weil es eine lange Liste ist.
Hier wird auf einen bestimmten Datenbankbesitzer eingegrenzt:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Ergebnis:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+