Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
Monarchy
Member

Откуда: Москва
Сообщений: 77
Коллеги, приветствую!

Информацию, которую успешно возвращает assp в окне MDX SSMS о партициях многомерного куба нужно записать в таблицу Sql:
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/
30 окт 20, 18:00    [22223733]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2355
Monarchy,

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

select * from OpenRowset (
                    'MSOLAP',
                    'DATASOURCE=сервер; Initial Catalog="база";',
                    'call assp.DiscoverXmlMetadata("Partition")'
		 )
31 окт 20, 02:46    [22223847]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
Monarchy
Member

Откуда: Москва
Сообщений: 77
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 ...'
то успешно выполняется
31 окт 20, 21:22    [22224128]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2355
Monarchy,

у меня работает нормально.
в Managment studio MDX запрос а в нем этот call - работает?
2 ноя 20, 10:46    [22224655]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
Monarchy
Member

Откуда: Москва
Сообщений: 77
ShIgor,

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

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

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

Возможно поэтому OpenRowset, не видя структуру результата, ругается.
3 ноя 20, 16:51    [22225820]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
vikkiv
Member

Откуда: London
Сообщений: 2761
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)

Сообщение было отредактировано: 3 ноя 20, 17:23
3 ноя 20, 17:25    [22225841]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
Monarchy
Member

Откуда: Москва
Сообщений: 77
vikkiv,

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

Надо наверное скачать и стандартную ASSP последней версии:
https://github.com/ASStoredProcedures/ASStoredProcedures/releases
Это не быстро поставить, т.к. должно пройти через безопасников, у меня нет прав скачивать и ставить их на проде.
То, что ShIgor пишет, что у него работает стандартная ASSP, вселяет оптимизм.
Самим писать - это редко нужно что-то менять в ней и держать спеца вряд ли целесообразно, проще скачать существующее с открытым кодом.
3 ноя 20, 17:57    [22225876]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
vikkiv
Member

Откуда: London
Сообщений: 2761
Monarchy,

Ну так из-за открытости как раз и привёл в списке PS , тот-же .NET в нескомпилированном скриптовом виде.
собери через foreach на каждую партицию, положи resultset в System.Data .. передай на SQL Server..
делов-то на раз-два..
3 ноя 20, 18:03    [22225882]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
M4E95
Member

Откуда:
Сообщений: 2
Exec(‘<Statement xmlns=“urn:schemas-Microsoft-com:xml-analysis”>
Call assp.DiscoverXmlMetadata(“Partition”)
</Statement>’) At as
9 ноя 20, 14:54    [22228785]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных о партициях MD SSAS в таблицу Sql  [new]
Monarchy
Member

Откуда: Москва
Сообщений: 77
M4E95,

Спасибо, так работает!!!)
9 ноя 20, 18:19    [22228953]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить