In dit artikel worden vier manieren gepresenteerd om een lijst met door de gebruiker gedefinieerde weergaven in een SQL Server-database te retourneren.
Als u alleen systeemweergaven wilt zien, of zowel door de gebruiker gedefinieerde en systeemweergaven, zie Verschil tussen sys.views, sys.system_views en sys.all_views in SQL Server.
Optie 1 – Het VIEWS-informatieschemaweergave
U kunt de VIEWS
. gebruiken informatieschemaweergave om een lijst te krijgen van alle door de gebruiker gedefinieerde weergaven in een database.
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Resultaat:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Retourneer de definitie van de weergave
De INFORMATION_SCHEMA.VIEWS
weergave heeft ook een VIEW_DEFINITION
kolom, zodat u indien nodig gemakkelijk de definitie van elke weergave kunt retourneren.
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Optie 2 – De sys.views systeemcatalogusweergave
Een andere manier om een lijst met weergaven te retourneren, is door de sys.views
. op te vragen systeemcatalogusweergave.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Resultaat:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Retourneer de definitie van de weergave
De sys.view
weergave bevat geen kolom voor de definitie van het object. Als u de definitie van elke weergave wilt retourneren, kunt u deze samenvoegen met de sys.sql_modules
systeemweergave.
Voorbeeld:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Optie 3 – De systeemcatalogusweergave sys.objects
Een andere manier om een lijst met weergaven te retourneren, is door de sys.objects
. op te vragen systeemcatalogusweergave.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Resultaat:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Het type V
is voor "Bekijken". Een andere manier om dit te doen is filteren op de type_desc
kolom:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Retourneer de definitie van de weergave
De sys.objects
weergave bevat geen kolom voor de definitie van het object. Als u de definitie van elke weergave wilt retourneren, kunt u deze samenvoegen met de sys.sql_modules
systeemweergave.
Voorbeeld:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Optie 4 – De sp_tables opgeslagen procedure
De sp_tables
opgeslagen procedure retourneert een lijst met objecten die in de huidige omgeving kunnen worden opgevraagd. Dit omvat elke tabel of weergave, behalve synoniemenobjecten.
U kunt de resultaten beperken tot alleen weergaven met de @table_type
parameter. Je kunt het ook beperken tot een bepaalde eigenaar of catalogus.
Als u de volgende code uitvoert, worden alle weergaven in de huidige database geretourneerd, inclusief systeemweergaven.
EXEC sp_tables @table_type = "'VIEW'";
Ik zal de resultaten hier niet presenteren omdat het een lange lijst is.
Hier wordt het beperkt tot een bepaalde database-eigenaar:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Resultaat:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+