问题描述
我的OLE DB源查询如下所示:
select a,b,sum(c)
from(select a,c from t1 union all
select a,c from t2 union all
select a,c from t3) a
inner join t2 on ...
group by a,b
它给了我以下错误:
SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E14。 OLE DB记录可用。源:“ Microsoft SQL Server本机客户端11.0”结果:0x80040E14说明:“警告:通过聚合或其他SET操作消除了空值。 OLE DB记录可用。源:“ Microsoft SQL Server本机客户端11.0”结果:0x80040E14说明:“由于文件组'DEFAULT'中的磁盘空间不足,无法为数据库'TEMPDB'分配新页。通过在文件组中删除对象来创建必要的空间,并添加文件组中添加其他文件,或为文件组中的现有文件设置自动增长。”
源表并不大,它们之间大约有3M行。知道我该如何处理tempdb错误吗?
解决方法
预聚合表可能帮助:
select a,b,sum(c)
from ((select a,sum(c) as c
from t1
group by a,b
) union all
(select a,sum(c) as c
from t2
group by a,sum(c)
from t3
group by a,b
)
) t inner join
t2
on ...
group by a,b;