SQL Openquery - у объекта нет столбцов

0

У меня есть динамически хранимая процедура, которая создает оператор mdx для OpenQuery. Таким образом, может случиться так, что объекты из инструкции 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'

Таким образом, ввод параметра даты на декабрь (месяц написания этого сообщения) отлично работает, но ввод января 2018 года (следующий месяц) и все последующие месяцы возвращает ошибку. Любая помощь приветствуется.

Теги:
sql-server
linked-server
mdx

1 ответ

0
Лучший ответ

Удаление "непустого" из запроса устранило мою проблему. Кажется, что нет никаких непосредственных наблюдаемых недостатков.

  • 0
    Для некоторых не будущих дат вы можете получить пустые строки или столбцы, если вы удалите один из NonEmpties

Ещё вопросы

Сообщество Overcoder
Наверх
Меню