Гость
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Выгрузка данных о партициях MD SSAS в таблицу Sql / 10 сообщений из 10, страница 1 из 1
30.10.2020, 18:00
    #40013565
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Коллеги, приветствую!

Информацию, которую успешно возвращает assp в окне MDX SSMS о партициях многомерного куба нужно записать в таблицу Sql:
Код: sql
1.
call assp.DiscoverXmlMetadata('Partition')



Желательно попроще, без SSIS, типа OpenQuery.
Кто-нибудь знает как?

Пока нашел через SSIS через компонент Ado Net Source, Sql Comand = 'call assp.DiscoverXmlMetadata('Partition')' но он ругается так:
"OLE DB error: OLE DB or ODBC error: Query (1, 6) Ошибка выполнения управляемой хранимой процедуры DiscoverXmlMetadata: Exception has been thrown by the target of an invocation.Cannot find column [Name]...
Error at Data Flow Task [ADO NET Source [1]]: System.Data.OleDb.OleDbException (0x80004005): OLE DB error: OLE DB or ODBC error: Query (1, 6) Ошибка выполнения управляемой хранимой процедуры DiscoverXmlMetadata: Exception has been thrown by the target of an invocation.Cannot find column [Name]...
at System.Data.OleDb.OleDbCommand.ProcessResults(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.PrepareCommandText(Int32 expectedExecutionCount)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.ReinitializeMetaData()
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostReinitializeMetaData(IDTSManagedComponentWrapper100 wrapper)
"
https://www.fourmoo.com/2014/05/29/ssas-sql-server-analysis-services-getting-all-partition-information-from-ssas-database-2/
...
Рейтинг: 0 / 0
31.10.2020, 02:46
    #40013638
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Monarchy,

так через openrowset и делайте

Код: sql
1.
2.
3.
4.
5.
select * from OpenRowset (
                    'MSOLAP',
                    'DATASOURCE=сервер; Initial Catalog="база";',
                    'call assp.DiscoverXmlMetadata("Partition")'
		 )
...
Рейтинг: 0 / 0
31.10.2020, 21:22
    #40013793
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
ShIgor, спасибо за ответ, но ругается:

OLE DB provider "MSOLAP" for linked server "(null)" returned message "OLE DB error: OLE DB or ODBC error: Query (1, 6) Ошибка выполнения управляемой хранимой процедуры DiscoverXmlMetadata: Exception has been thrown by the target of an invocation.Cannot find column [Name]...".

А если вместо:
'call assp.DiscoverXmlMetadata("Partition")'
указать обычный MDX
'select .. from ...'
то успешно выполняется
...
Рейтинг: 0 / 0
02.11.2020, 10:46
    #40014147
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Monarchy,

у меня работает нормально.
в Managment studio MDX запрос а в нем этот call - работает?
...
Рейтинг: 0 / 0
03.11.2020, 16:51
    #40014931
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
ShIgor,

У Вас в SSMS выдается количество строк и столбцов с результатом?

Может потому что у меня ASSP не совсем оригинальная и не возвращает в SSMS количество строк и столбцов, хотя результат возвращает:

Executing the query ...
Obtained object of type: Microsoft.AnalysisServices.AdomdClient.AdomdDataReader
Run complete

Возможно поэтому OpenRowset, не видя структуру результата, ругается.
...
Рейтинг: 0 / 0
03.11.2020, 17:25
    #40014946
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Monarchy,

сборка точно нормально работает?
для некритичного тестирования напр. выполнить в SSMS: call ASSP.ASStoredProcs.FunctionLister.AssemblyVersion()
сначала напрямую в SSMS/MDX а потом из SQL через openrowset/openquery
там граблей целыми рядами - от самой сборки (права исполнения под каким пользователем, версии SSAS драйверов, настроек самого SSAS сервера и пр.,)
и до как делегирование пользователя настроено между SQL и SSAS (в т.ч. если используется - конфигурации Linked Server)
ну и типы данных и пр.
хотя вроде явно написано - несоответствие получаемой схемы с ожидаемой.

...
кроме всего прочего - уже изначально всё не по феншую: сторонние сборки от третьих лиц это ещё те проблемы, далеко не в каждой компании такое разрешат
сами-бы давно написали то-же что и сборка делает но своими штатными средствами (C# / VB.NET / PS и т.д.)
или без FQN типа call ASSP.AssemblyVersion() / call AssemblyVersion() (уже даже не помню как там разрешение UDF/UDSP работает на CLR)
...
Рейтинг: 0 / 0
03.11.2020, 17:57
    #40014972
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
vikkiv,

спасибо за ответ!
В том то и дело, что у нас ASSP какая-то модифицированная предыдущими разработчиками, под кастомизированные Drillthrough.
Такой функции в ней нет: call ASSP.ASStoredProcs.FunctionLister.AssemblyVersion()
Я подозреваю, что из-за не оригинальности call ASSP.DiscoverXmlMetadata('Partition') возвращает результат не того формата.

Надо наверное скачать и стандартную ASSP последней версии:
https://github.com/ASStoredProcedures/ASStoredProcedures/releases
Это не быстро поставить, т.к. должно пройти через безопасников, у меня нет прав скачивать и ставить их на проде.
То, что ShIgor пишет, что у него работает стандартная ASSP, вселяет оптимизм.
Самим писать - это редко нужно что-то менять в ней и держать спеца вряд ли целесообразно, проще скачать существующее с открытым кодом.
...
Рейтинг: 0 / 0
03.11.2020, 18:03
    #40014976
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Monarchy,

Ну так из-за открытости как раз и привёл в списке PS , тот-же .NET в нескомпилированном скриптовом виде.
собери через foreach на каждую партицию, положи resultset в System.Data .. передай на SQL Server..
делов-то на раз-два..
...
Рейтинг: 0 / 0
09.11.2020, 14:54
    #40016522
M4E95
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
Exec(‘<Statement xmlns=“urn:schemas-Microsoft-com:xml-analysis”>
Call assp.DiscoverXmlMetadata(“Partition”)
</Statement>’) At as
...
Рейтинг: 0 / 0
09.11.2020, 18:19
    #40016607
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных о партициях MD SSAS в таблицу Sql
M4E95,

Спасибо, так работает!!!)
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Выгрузка данных о партициях MD SSAS в таблицу Sql / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]