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 | +-------------------+---------------+--------------+--------------+-----------+