回答

收藏

什么是SQL Server中间的不准确列?

技术问答 技术问答 251 人阅读 | 0 人回复 | 2023-09-14

在类型计算列中创建索引nvarchar以下错误:3 L7 w1 w/ U# @  l' c
不能在表 MyTable创建索引或统计信息 MyIndex因为计算列4 B& D3 k$ G4 N
MyColumn不准确,不能长期保存。考虑从索引或统计键中删除列,或将计算列标记为持久存在。
! z2 T- [9 \+ k% ~) G# c4 D. J5 a
什么 不精确的    列是什么意思?/ [8 Q6 y, e4 l, j1 F
更新。定义如下:/ e, X5 ^0 E8 _* l
alter table dbo.MyTable    add [MyColumn] as dbo.MyDeterministicClrFunction(MyOtherColumn)go  create index MyIndex on dbo.MyTable(MyColumn)goUPDATE2。的MyDeterministicClrFunction定义如下:$ {/ d0 k0 Y* s( x4 g1 ]
[SqlFunction(IsDeterministic = true)]public static SqlString MyDeterministicClrFunction(SqlString input){    return input;}                ( c" O' C. M  f, c$ `' D
    解决方案:                                                                " P" J+ |$ V& O) [" ~. P8 P
                                                                根据MSDN,必须长期保留CLR Function列以索引:
, X2 }" o1 z% h' I8 I+ z任何包括公共语言运行时的公共语言运行时间(CLR)表达式计算列必须确定并标记为PERSISTED,然后可以为列建立索引。允许使用计算列定义CLR用户定义类型表达式。只要类型可以比较,类型就可以为CLR建立用户定义类型的计算列索引。有关更多信息,请参见CLR用户定义类型。
) x2 R2 R' T, E  Z' n7 Q坚持专栏,我怀疑它会起作用。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则