Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

4 sposoby na wyświetlenie listy wszystkich widoków w bazie danych SQL Server

W tym artykule przedstawiono cztery sposoby zwracania listy widoków zdefiniowanych przez użytkownika w bazie danych SQL Server.

Jeśli chcesz widzieć tylko widoki systemowe lub oba zdefiniowane przez użytkownika i widoki systemowe, zobacz Różnica między sys.views, sys.system_views i sys.all_views w SQL Server.

Opcja 1 – Widok schematu informacyjnego WIDOKÓW

Możesz użyć VIEWS widok schematu informacji, aby uzyskać listę wszystkich widoków zdefiniowanych przez użytkownika w bazie danych.

USE Music;
SELECT 
  TABLE_SCHEMA,
  TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS;

Wynik:

+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME   |
|----------------+--------------|
| dbo            | RockAlbums   |
| dbo            | JazzAlbums   |
| dbo            | BluesAlbums  |
+----------------+--------------+

Zwróć definicję widoku

INFORMATION_SCHEMA.VIEWS widok ma również VIEW_DEFINITION kolumny, dzięki czemu w razie potrzeby można łatwo zwrócić definicję każdego widoku.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Opcja 2 – Widok katalogu systemu sys.views

Innym sposobem na zwrócenie listy widoków jest zapytanie sys.views widok katalogu systemowego.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  Name
FROM sys.views;

Wynik:

+----------+-------------+
| Schema   | Name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Zwróć definicję widoku

sys.view widok nie zawiera kolumny dla definicji obiektu. Jeśli chcesz zwrócić definicję każdego widoku, możesz dołączyć do niego za pomocą sys.sql_modules widok systemu.

Przykład:

SELECT definition
FROM sys.views v
INNER JOIN sys.sql_modules m 
ON v.object_id = m.object_id;

Opcja 3 – Widok katalogu systemu sys.objects

Innym sposobem na zwrócenie listy widoków jest zapytanie o sys.objects widok katalogu systemowego.

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type = 'V';

Wynik:

+----------+-------------+
| Schema   | name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Typ V dotyczy „Widoku”. Innym sposobem na to jest filtrowanie według type_desc kolumna:

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type_desc = 'VIEW';

Zwróć definicję widoku

sys.objects widok nie zawiera kolumny dla definicji obiektu. Jeśli chcesz zwrócić definicję każdego widoku, możesz dołączyć do niego za pomocą sys.sql_modules widok systemu.

Przykład:

SELECT definition
FROM sys.objects o
INNER JOIN sys.sql_modules m 
ON o.object_id = m.object_id
WHERE type = 'V';

Opcja 4 – Procedura składowana sp_tables

sp_tables procedura składowana zwraca listę obiektów, które mogą być odpytywane w bieżącym środowisku. Obejmuje to dowolną tabelę lub widok, z wyjątkiem obiektów synonimów.

Możesz zawęzić wyniki do tylko widoków za pomocą @table_type parametr. Możesz także zawęzić go do konkretnego właściciela lub katalogu.

Wykonanie poniższego kodu zwróci wszystkie widoki w bieżącej bazie danych – w tym widoki systemowe.

EXEC sp_tables @table_type = "'VIEW'";

Nie będę przedstawiał wyników tutaj, ponieważ jest to długa lista.

Tutaj jest zawężony do danego właściciela bazy danych:

EXEC sp_tables 
  @table_owner = 'dbo',
  @table_type = "'VIEW'";

Wynik:

+-------------------+---------------+--------------+--------------+-----------+
| 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. Hierarchia technologii pamięci/magazynowania i SQL Server

  2. 4 sposoby liczenia wierszy w tabeli SQL Server z zaletami i wadami

  3. Pozycje ORDER BY muszą pojawić się na liście wyboru, jeśli instrukcja zawiera operator UNION, INTERSECT lub EXCEPT (SQL Server)

  4. Zachowaj relacje rodzic-dziecko podczas kopiowania danych hierarchicznych

  5. Podziel jedną kolumnę na wiele wierszy