Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

4 начина за изброяване на всички изгледи в база данни на SQL Server

Тази статия представя четири начина за връщане на списък с потребителски дефинирани изгледи в база данни на 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      |
+-------------------+---------------+--------------+--------------+-----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберете само първите редове за всяка уникална стойност на колона?

  2. Критерии за SQL филтър в критерии за присъединяване или клауза where, която е по-ефективна

  3. Изследване на онлайн индексни операции на ниво дял в SQL Server 2014 CTP1

  4. Има ли разлика между SQL Server Express (2012) и LocalDB?

  5. Кодиране на символи по подразбиране на SQL Server