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