Este artigo apresenta quatro maneiras de retornar uma lista de exibições definidas pelo usuário em um banco de dados SQL Server.
Se você quiser ver apenas as visualizações do sistema, ou ambas e definidas pelo usuário exibições do sistema, consulte Diferença entre sys.views, sys.system_views e sys.all_views no SQL Server.
Opção 1 – A Exibição do Esquema de Informações VIEWS
Você pode usar as
VIEWS
visualização do esquema de informações para obter uma lista de todas as visualizações definidas pelo usuário em um banco de dados. USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Resultado:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Retornar a definição da visualização
O
INFORMATION_SCHEMA.VIEWS
view também tem um VIEW_DEFINITION
coluna, para que você possa retornar facilmente a definição de cada exibição, se necessário. SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Opção 2 – A Exibição do Catálogo do Sistema sys.views
Outra maneira de retornar uma lista de visualizações é consultar o
sys.views
visualização do catálogo do sistema. USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Resultado:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Retornar a definição da visualização
O
sys.view
view não inclui uma coluna para a definição do objeto. Se você deseja retornar a definição de cada exibição, você pode juntá-la com o sys.sql_modules
visão do sistema. Exemplo:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Opção 3 – A Exibição do Catálogo do Sistema sys.objects
Outra maneira de retornar uma lista de visualizações é consultar o
sys.objects
visualização do catálogo do sistema. SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Resultado:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
O tipo
V
é para "Visualizar". Outra maneira de fazer isso é filtrar pelo type_desc
coluna:SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Retornar a definição da visualização
Os
sys.objects
view não inclui uma coluna para a definição do objeto. Se você deseja retornar a definição de cada exibição, você pode juntá-la com o sys.sql_modules
visão do sistema. Exemplo:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Opção 4 – O procedimento armazenado sp_tables
As
sp_tables
procedimento armazenado retorna uma lista de objetos que podem ser consultados no ambiente atual. Isso inclui qualquer tabela ou exibição, exceto objetos sinônimos. Você pode restringir os resultados a apenas visualizações com o
@table_type
parâmetro. Você também pode reduzi-lo a apenas um determinado proprietário ou catálogo. A execução do código a seguir retornará todas as visualizações no banco de dados atual – incluindo as visualizações do sistema.
EXEC sp_tables @table_type = "'VIEW'";
Não vou apresentar os resultados aqui porque é uma lista longa.
Aqui é reduzido a um determinado proprietário de banco de dados:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Resultado:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+