Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

4 Möglichkeiten zum Auflisten aller Ansichten in einer SQL Server-Datenbank

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