我在使用自定义CLR聚合函数的视图上创建索引时遇到问题.
我没有看到任何方法将聚合函数标记为确定性或使用模式绑定.
我正在创建我的函数:
CREATE ASSEMBLY StringUtil
AUTHORIZATION dbo
FROM 'C:\StringUtil.dll'
WITH PERMISSION_SET = UNSAFE
GO
CREATE AGGREGATE SUMSTRING (@input nvarchar(200))
RETURNS nvarchar(max) WITH SCHEMABINDING
EXTERNAL NAME StringUtil.Concatenate
Run Code Online (Sandbox Code Playgroud)
我的观点定义为:
CREATE VIEW RolledValues WITH SCHEMABINDING
AS
SELECT ID, SumString(ValueText) as Value FROM [dbo].[IDValue]
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)
当我尝试在该视图上创建索引时,会出现此问题:
CREATE UNIQUE CLUSTERED INDEX IDX_RollValues_ID_VALUE on RolledValues (ID)
Error: Cannot create index on view "dbo.RolledValues" because it uses aggregate
"dbo.SumString". Consider eliminating the aggregate, not indexing the view, or
using alternate aggregates.
Run Code Online (Sandbox Code Playgroud)
那么可以在索引视图中使用自定义聚合函数吗?我找不到任何关于此的文件......