sql >> Database >  >> RDS >> Sqlserver

4 manieren om alle weergaven in een SQL Server-database weer te geven

In dit artikel worden vier manieren gepresenteerd om een ​​lijst met door de gebruiker gedefinieerde weergaven in een SQL Server-database te retourneren.

Als u alleen systeemweergaven wilt zien, of zowel door de gebruiker gedefinieerde en systeemweergaven, zie Verschil tussen sys.views, sys.system_views en sys.all_views in SQL Server.

Optie 1 – Het VIEWS-informatieschemaweergave

U kunt de VIEWS . gebruiken informatieschemaweergave om een ​​lijst te krijgen van alle door de gebruiker gedefinieerde weergaven in een database.

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

Resultaat:

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

Retourneer de definitie van de weergave

De INFORMATION_SCHEMA.VIEWS weergave heeft ook een VIEW_DEFINITION kolom, zodat u indien nodig gemakkelijk de definitie van elke weergave kunt retourneren.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Optie 2 – De sys.views systeemcatalogusweergave

Een andere manier om een ​​lijst met weergaven te retourneren, is door de sys.views . op te vragen systeemcatalogusweergave.

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

Resultaat:

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

Retourneer de definitie van de weergave

De sys.view weergave bevat geen kolom voor de definitie van het object. Als u de definitie van elke weergave wilt retourneren, kunt u deze samenvoegen met de sys.sql_modules systeemweergave.

Voorbeeld:

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

Optie 3 – De systeemcatalogusweergave sys.objects

Een andere manier om een ​​lijst met weergaven te retourneren, is door de sys.objects . op te vragen systeemcatalogusweergave.

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

Resultaat:

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

Het type V is voor "Bekijken". Een andere manier om dit te doen is filteren op de type_desc kolom:

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

Retourneer de definitie van de weergave

De sys.objects weergave bevat geen kolom voor de definitie van het object. Als u de definitie van elke weergave wilt retourneren, kunt u deze samenvoegen met de sys.sql_modules systeemweergave.

Voorbeeld:

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

Optie 4 – De sp_tables opgeslagen procedure

De sp_tables opgeslagen procedure retourneert een lijst met objecten die in de huidige omgeving kunnen worden opgevraagd. Dit omvat elke tabel of weergave, behalve synoniemenobjecten.

U kunt de resultaten beperken tot alleen weergaven met de @table_type parameter. Je kunt het ook beperken tot een bepaalde eigenaar of catalogus.

Als u de volgende code uitvoert, worden alle weergaven in de huidige database geretourneerd, inclusief systeemweergaven.

EXEC sp_tables @table_type = "'VIEW'";

Ik zal de resultaten hier niet presenteren omdat het een lange lijst is.

Hier wordt het beperkt tot een bepaalde database-eigenaar:

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

Resultaat:

+-------------------+---------------+--------------+--------------+-----------+
| 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. Schakel PostgreSQL-controles van externe sleutels uit voor migraties

  2. Hoe het tijdgedeelte van een datetime-waarde (SQL Server) te verwijderen?

  3. Een standaardwaarde instellen voor een bestaande kolom

  4. MariaDB SUBSTR() uitgelegd