SQL Server - 如何移除计算列上的IsPersisted属性

3
在SQL Server中,我们如何使用T-SQL关闭计算列的PERSISTED属性?我能够在Management Studio GUI中执行此操作,但不知道如何使用T-SQL进行操作。

您可以通过点击“脚本”按钮而非“保存”来生成GUI实际使用的脚本。虽然您无法更改PERSISTED列,但是您只能删除并重新创建它。GUI会执行此操作或者实际上删除并重建整个表。 - Panagiotis Kanavos
2个回答

4
如果您想从列中删除“PERSISTED”属性,则可以尝试以下方法:
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn DROP PERSISTED;

根据MSDN的说法:

[ {ADD | DROP} PERSISTED ]

Specifies that the PERSISTED property is added to or dropped 
from the specified column. The column must be a computed column that is
defined with a deterministic expression.
相关文章:您还可以查看Aaron Bertrand的这篇文章,介绍如何将所有计算列更改为已持久化在SQL Server中。

1

按照以下步骤可以完成此操作:

  1. 在表中创建一个与持续列相同数据类型的新列。
  2. 使用持续列的值更新新列。
  3. 从表中删除持续列。
  4. 将新列重命名为持续列的名称。

这句话是关于一个不同的事情,即在DDL执行时是否可用统计信息。您无法更改已持久化的列。 - Panagiotis Kanavos
@PanagiotisKanavos:是的,明白了。已经移除了! - Rahul Tripathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接