【发布时间】:2014-08-15 18:59:18
【问题描述】:
我有以下查询来检查我的数据库的哪些列是计算出来的,而不是持久化的
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 = 0
是否有任何简单的查询可以将所有这些列更新为持久化?
【问题讨论】:
-
您是否尝试过对 sys.computed_columns 进行 UPDATE 查询?
-
当然。消息是:不允许对系统目录进行临时更新。
-
我刚刚用谷歌搜索了那个错误信息,看到了很多关于如何绕过它的结果..
-
@Tab 请不要建议人们直接更新系统目录。你真的认为更新会神奇地将所有这些值写入磁盘吗?不。如果您找到解决方法,您可能会做的只是破坏您的数据库、使您的支持无效以及许多其他事情。你今天穿坏主意牛仔裤了吗?
-
另请注意,并非所有计算列都可以持久化,除了将它们更改为持久化之外,您可能还必须删除并重新创建任何约束或他们参与的索引...
标签: sql-server sql-server-2008 calculated-columns persisted-column