Denne artikel præsenterer fire måder at returnere en liste over brugerdefinerede visninger i en SQL Server-database.
Hvis du kun vil se systemvisninger eller både brugerdefinerede og systemvisninger, se forskellen mellem sys.views, sys.system_views og sys.all_views i SQL Server.
Mulighed 1 – VIEWS-informationsskemavisningen
Du kan bruge VIEWS
informationsskemavisning for at få en liste over alle brugerdefinerede visninger i en database.
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Resultat:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Returnér visningens definition
INFORMATION_SCHEMA.VIEWS
visningen har også en VIEW_DEFINITION
kolonne, så du nemt kan returnere hver visnings definition, hvis det kræves.
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Mulighed 2 – Sys.views systemkatalogvisning
En anden måde at returnere en liste over visninger på er at forespørge på sys.views
systemkatalogvisning.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Resultat:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Returnér visningens definition
sys.view
visningen inkluderer ikke en kolonne til objektets definition. Hvis du vil returnere hver visnings definition, kan du tilslutte den med sys.sql_modules
systemvisning.
Eksempel:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Mulighed 3 – Sys.objects systemkatalogvisning
En anden måde at returnere en liste over visninger på er at forespørge på sys.objects
systemkatalogvisning.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Resultat:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Typen V
er for "View". En anden måde at gøre dette på er at filtrere efter type_desc
kolonne:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Returnér visningens definition
sys.objects
visningen inkluderer ikke en kolonne til objektets definition. Hvis du vil returnere hver visnings definition, kan du tilslutte den med sys.sql_modules
systemvisning.
Eksempel:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Mulighed 4 – Sp_tables Stored Procedure
sp_tables
lagret procedure returnerer en liste over objekter, der kan forespørges i det aktuelle miljø. Dette inkluderer enhver tabel eller visning, undtagen synonymobjekter.
Du kan indsnævre resultaterne til kun visninger med @table_type
parameter. Du kan også indsnævre det til kun en given ejer eller katalog.
Udførelse af følgende kode vil returnere alle visninger i den aktuelle database – inklusive systemvisninger.
EXEC sp_tables @table_type = "'VIEW'";
Jeg vil ikke præsentere resultaterne her, fordi det er en lang liste.
Her er det indsnævret til en given databaseejer:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Resultat:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+