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 | +-------------------+---------------+--------------+--------------+-----------+