sql >> Databasteknik >  >> RDS >> Sqlserver

4 sätt att lista alla vyer i en SQL Server-databas

Den här artikeln presenterar fyra sätt att returnera en lista med användardefinierade vyer i en SQL Server-databas.

Om du bara vill se systemvyer, eller både användardefinierade och systemvyer, se Skillnaden mellan sys.views, sys.system_views och sys.all_views i SQL Server.

Alternativ 1 – Informationsschemavyn för VIEWS

Du kan använda VIEWS informationsschemavy för att få en lista över alla användardefinierade vyer i en databas.

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

Resultat:

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

Återställ vyns definition

INFORMATION_SCHEMA.VIEWS vyn har också en VIEW_DEFINITION kolumn, så att du enkelt kan returnera varje vys definition om det behövs.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Alternativ 2 – Sys.views systemkatalogvy

Ett annat sätt att returnera en lista med vyer är att fråga sys.views systemkatalogvy.

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

Resultat:

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

Återställ vyns definition

sys.view vyn innehåller inte en kolumn för objektets definition. Om du vill returnera varje vys definition kan du ansluta den med sys.sql_modules systemvy.

Exempel:

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

Alternativ 3 – Sys.objects systemkatalogvy

Ett annat sätt att returnera en lista med vyer är att fråga sys.objects systemkatalogvy.

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

Resultat:

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

Typen V är för "Visa". Ett annat sätt att göra detta är att filtrera efter type_desc kolumn:

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

Återställ vyns definition

sys.objects vyn innehåller inte en kolumn för objektets definition. Om du vill returnera varje vys definition kan du ansluta den med sys.sql_modules systemvy.

Exempel:

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

Alternativ 4 – Sp_tables lagrade procedur

sp_tables lagrad procedur returnerar en lista över objekt som kan frågas i den aktuella miljön. Detta inkluderar alla tabeller eller vyer, förutom synonymobjekt.

Du kan begränsa resultaten till bara vyer med @table_type parameter. Du kan också begränsa den till en viss ägare eller katalog.

Om du kör följande kod returneras alla vyer i den aktuella databasen – inklusive systemvyer.

EXEC sp_tables @table_type = "'VIEW'";

Jag kommer inte att presentera resultaten här eftersom det är en lång lista.

Här är det begränsat till en given databasägare:

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

Resultat:

+-------------------+---------------+--------------+--------------+-----------+
| 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. Bindande parametrar för WHERE IN-satsen med PDO

  2. 5 sätt att kontrollera en kolumns datatyp i SQLite

  3. Gör det enklare att hantera en PostgreSQL-produktionsdatabas

  4. 3 sätt att få jobbstegen för ett SQL Server Agent Job (T-SQL)