Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Использую запросы к Linked-серверу SSAS, и с помощью T-SQL формирую MDX-запросы к кубу.
Дошел до такого момента - некоторые из запросов получаются слишком длинными, а максимальная длинна MDX-выражения вот в такой конструкции:
select * from openquery (linked_ssas_server,'MDX - выражение')

как известно 8тыс. символов. Мои MDX-выражения больше чем 8 тыс.

Нашел вот такой код:

declare @query varchar(max) = 
'
	select 
	[Measures].[XXX] on columns
	from [CUBE]
	where 
	(
	[Период].[Дата].&[2014-01-01T00:00:00]
	)
'


execute (@query) at linked_ssas_server


Он работает, и длина параметра @query не ограничена.
Но теперь я никак не могу затянуть результат моего "execute (@query) at linked_ssas_server" в таблицу или переменную.
Обшарил уже весь интернет, ничего не работает..

Прошу помочь!
1 окт 14, 05:57    [16641912]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Santa89
Но теперь я никак не могу затянуть результат моего "execute (@query) at linked_ssas_server" в таблицу или переменную.
В смысле такая конструкция выдает ошибку?
 INSERT INTO #temp_table EXEC ('your code') 
1 окт 14, 06:32    [16641935]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Ruuu,

да, видимо это такая особенность SSAS:

CREATE TABLE #temp_table (val varchar(max))

INSERT INTO #temp_table
exec (@query) at linked_ssas_server


выдаёт:
The requested operation could not be performed because OLE DB provider "MSOLAP" for linked server "linked_ssas_server" does not support the required transaction interface.
1 окт 14, 06:54    [16641944]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8834
Может надо включить распределенные транзакции? Для такого вида запроса они понадобятся.
1 окт 14, 11:13    [16642916]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Владислав Колосов,

согласен, только ГДЕ..
1 окт 14, 11:23    [16643018]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8834
Santa89, ну как где... Там целый ритуал... Включается DTC в ОС на источнике и приёмнике. Хотя сообщение об ошибке не такое, которое можно было бы ожидать при отключенном координаторе. Погуглите, я не помню наизусть.
1 окт 14, 11:43    [16643199]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
В свойствах MSOLAP провайдера какие опции выбраны ?
1 окт 14, 12:32    [16643668]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Glory,

К сообщению приложен файл. Размер - 52Kb
2 окт 14, 03:13    [16647891]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Даже установка всех галок в данном окне не помогла.

Просто в голове не укладывается - как Management Studio показывает мне результать моего "execute (@query) at linked_ssas_server" (значение меры куба в текстовом формате) а вытащить это значение в таблицу или переменную не получается!!
2 окт 14, 03:20    [16647893]     Ответить | Цитировать Сообщить модератору
 Re: Как загнать результат Execute (@query) at Linked_Server в переменную ?  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Вопрос можно считать закрытым.
Кому интересно:

В свойствах линкед-сервера SSAS нужно поставить последнюю опцию в False
Теперь insert into @table exec (@query) at linked_server работает

К сообщению приложен файл. Размер - 30Kb
2 окт 14, 04:28    [16647918]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить