Я обнаружил множество мест, которые имеют сходства, но ни одно из них на самом деле не приближается к тому, что я ищу, - это получение фактического определения отдельных столбцов представления (по сравнению с полным определением представления).
Учитывая следующий пример, я пытаюсь получить определение каждого из столбцов представления отдельно.
CREATE TABLE [dbo].[TEST_TABLE]
(
[id] int NOT NULL,
[created] datetime NULL,
[counts] int NULL,
[url] varchar(20) NULL
);
GO
CREATE VIEW [dbo].[TEST_VIEW]
WITH SCHEMABINDING
AS
SELECT [id] AS [id]
, CONVERT( varchar(16), [created], 107 ) AS [created]
, CONVERT( varchar(20), [counts] ) + ' - ' + [url] AS [url]
FROM [dbo].[TEST_TABLE];
GO
DROP VIEW [dbo].[TEST_VIEW];
DROP TABLE [dbo].[TEST_TABLE];
GO
Результат, который я ищу, похож на это:
name definition
------- ------------------------------------------------
id [id]
created CONVERT( varchar(16), [created], 107 )
url CONVERT( varchar(20), [counts] ) + ' - ' + [url]
Любая помощь в сближении с этим будет высоко оценена, так как я боролся с этим уже весь день. Я могу получить полное определение представления, но столбцы могут быть довольно беспорядочными, чтобы попытаться выйти:
SELECT sysmod.definition AS [View Definition]
FROM sys.sql_modules sysmod
INNER JOIN sys.objects sysob ON ( sysmod.object_id = sysob.object_id )
INNER JOIN sys.schemas syssh ON ( sysobj.schema_id = syssch.schema_id )
WHERE sysob.name = N'TEST_VIEW'
AND syssh.name = N'dbo';
Что-то вроде sys.computed_columns
, но для представлений было бы абсолютно идеально.