我想查询数据库中计算列的定义,但是找不到似乎可以实现我想要的功能的命令...
例如,如果一个列被定义为:
CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))
在DDL中,我想在数据库上运行一个命令来检索"AS"语句,以便我可以将其与预期值进行比较。(我正在开发一个SQL解析器,用于将现有数据库与DDL定义进行比较)... 这是否可行?我想查询数据库中计算列的定义,但是找不到似乎可以实现我想要的功能的命令...
例如,如果一个列被定义为:
CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))
在DDL中,我想在数据库上运行一个命令来检索"AS"语句,以便我可以将其与预期值进行比较。(我正在开发一个SQL解析器,用于将现有数据库与DDL定义进行比较)... 这是否可行?这在 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')
试试这个:
SELECT
name, definition
FROM
sys.computed_columns
应该适用于 SQL Server 2005 及更高版本。