Тази статия представя четири начина за връщане на списък с потребителски дефинирани изгледи в база данни на SQL Server.
Ако искате да виждате само системни изгледи или и двете дефинирани от потребителя и системни изгледи, вижте Разлика между sys.views, sys.system_views и sys.all_views в SQL Server.
Опция 1 – Изглед на информационна схема VIEWS
Можете да използвате VIEWS
изглед на информационна схема, за да получите списък с всички потребителски дефинирани изгледи в база данни.
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Резултат:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Върнете дефиницията на изгледа
INFORMATION_SCHEMA.VIEWS
изгледът също има VIEW_DEFINITION
колона, така че можете лесно да върнете дефиницията на всеки изглед, ако е необходимо.
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Опция 2 – Изгледът на системния каталог sys.views
Друг начин да върнете списък с изгледи е да направите заявка за sys.views
изглед на системния каталог.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Резултат:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Върнете дефиницията на изгледа
sys.view
изгледът не включва колона за дефиницията на обекта. Ако искате да върнете дефиницията на всеки изглед, можете да го присъедините с sys.sql_modules
системен изглед.
Пример:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Опция 3 – Изгледът на системния каталог sys.objects
Друг начин да върнете списък с изгледи е да направите заявка за sys.objects
изглед на системния каталог.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Резултат:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Типът V
е за „Преглед“. Друг начин да направите това е филтриране по type_desc
колона:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Върнете дефиницията на изгледа
sys.objects
изгледът не включва колона за дефиницията на обекта. Ако искате да върнете дефиницията на всеки изглед, можете да го присъедините с sys.sql_modules
системен изглед.
Пример:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Опция 4 – Съхранената процедура sp_tables
sp_tables
Съхранената процедура връща списък с обекти, които могат да бъдат заявени в текущата среда. Това включва всяка таблица или изглед, с изключение на синонимни обекти.
Можете да стесните резултатите само до прегледи с @table_type
параметър. Можете също да го стесните само до даден собственик или каталог.
Изпълнението на следния код ще върне всички изгледи в текущата база данни – включително системни изгледи.
EXEC sp_tables @table_type = "'VIEW'";
Няма да представя резултатите тук, защото списъкът е дълъг.
Тук той се стеснява до даден собственик на база данни:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Резултат:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+