SQL Server: вычисленные определения столбцов, которые можно получить из базы данных? - PullRequest
10 голосов
/ 19 февраля 2011

Я хотел бы запросить определение вычисляемого столбца из базы данных, но не могу найти команду, которая, кажется, выполняет то, что я хочу ...

Например, если столбец определен как:

CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))

в DDL, я хотел бы запустить команду в базе данных, чтобы получить этот оператор "AS", чтобы я мог сравнить его с его ожидаемым значением.(Я разрабатываю синтаксический анализатор SQL, который будет сравнивать существующую базу данных с определением DDL) ...

Возможно ли это?

Ответы [ 2 ]

21 голосов
/ 19 февраля 2011

Это работает в SQL Server 2008

create table dbo.Foo
(
StartDate int,
CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))
)

select definition 
from sys.computed_columns 
where name='CallDT' and object_id=object_id('dbo.Foo')
9 голосов
/ 19 февраля 2011

Попробуйте это:

SELECT
    name, definition    
FROM 
    sys.computed_columns

Должно работать в SQL Server 2005 и новее.

...