我有一个动态存储过程,它为OpenQuery创建一个mdx语句。因此,mdx语句中的对象可能是空的。在这种情况下,我想要一个空字符串。
通常,查询工作,除非我选择一个来自未来的日期,在这种情况下SQL Server给我这个错误:
“链接服务器”XYZ“的OLE DB提供程序”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月(下个月)以及所有其他几个月后都会返回错误。任何帮助表示赞赏。
从查询中删除“非空”修复了我的问题。似乎没有任何直接可观察到的缺点。