Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

4 maneiras de listar todas as exibições em um banco de dados SQL Server


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