如何检查计算列是否持久化?

时间:2011-03-11 12:17:29

标签: sql-server-2008 persistence calculated-columns

如何检查计算列是否持久化? (MS SQL Server)

2 个答案:

答案 0 :(得分:10)

sys.computed_columns中提供了计算列属性。

select * from sys.computed_columns where is_persisted = 1
对于要保留的列,

is_persisted = 1,否则为0。

您可以通过object_id例如

将其链接回sys.tables
select t.name, c.name
from sys.tables t
inner join sys.computed_columns c on c.object_id = t.object_id
where c.is_persisted = 1

并更改您的where子句,以包含适合您的方案的表名/字段名称。

答案 1 :(得分:0)

不断创新。
如果您需要所有列,或仅需要计算列,或仅需要持久计算列,则可以使用一个脚本来做到这一点:

SELECT * 
FROM sys.columns AS sysc

LEFT JOIN sys.computed_columns AS syscc 
    ON syscc.object_id = sysc.object_id 
    AND syscc.name = sysc.name 

WHERE (1=1) 
AND sysc.is_computed = 1 -- optional 
AND is_persisted = 1  -- optional