小编viv*_*ron的帖子

SQL Server 2008:自定义聚合函数和索引视图

我在使用自定义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)

那么可以在索引视图中使用自定义聚合函数吗?我找不到任何关于此的文件......

sql-server sqlclr sql-server-2008

3
推荐指数
1
解决办法
1489
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1

sqlclr ×1