我有一个动态存储过程,它为OpenQuery创建一个mdx语句。因此,mdx语句中的对象可能是空的。在这种情况下,我想要一个空字符串。
通常,查询有效,除非我选择来自未来的日期,在这种情况下SQL Server会给我这个错误:
" OLE DB提供程序" XYZ"对于链接服务器" XYZ"表明 对象没有列或当前用户没有 该对象的权限。"
select
t.*
from OPENQUERY([SomeServer_OLAP],''
SELECT
non empty{[Measures].[FactWorkItemHistory Microsoft_VSTS_Scheduling_OriginalEstimate],
[Measures].[FactWorkItemHistory Microsoft_VSTS_Scheduling_CompletedWork],
[Measures].[Microsoft_VSTS_Scheduling_RemainingWork]} ON COLUMNS
, NON EMPTY { ([Work Item].[Iteration Path].[Iteration Path].ALLMEMBERS
* [Work Item].[System_AssignedTo].[System_AssignedTo].ALLMEMBERS)} on ROWS
FROM [Team System]
WHERE '+@Month+'
'') t'
因此,输入12月的日期参数(写这篇文章的月份)工作正常,但是进入2018年1月(下个月)以及所有其他几个月后都会返回错误。任何帮助表示赞赏。
答案 0 :(得分:0)
删除"非空"从查询修复我的问题。似乎没有任何直接可观察到的缺点。