【问题标题】:Connecting to Microsoft Analysis Server using SSIS Import/Export-Assistant使用 SSIS Import/Export-Assistant 连接到 Microsoft Analysis Server
【发布时间】:2016-11-12 22:42:35
【问题描述】:

目标是以精简的方式将数据从 Microsoft Analysis Server Cube 导出到平面文件中。

我使用 SQL Server-Import/Export-Assistant。 使用选项“从一个或多个表或视图复制数据”下载运行顺利。 -> 没问题

当我使用 MDX 表达式(“编写查询以指定要传输的数据”)查询预执行时,它会给出 错误消息

错误 0xc0202009:数据流任务 1:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E21。

编辑:请注意,我尝试运行 SQL Server 2016 RC0 导入和导出数据向导 -> 必须使用此向导,因为它是唯一有效的许可证。

编辑: 我发现以下 MDX 表达式存在差异。

查询 1

SELECT
  [Measures].[measure1] ON COLUMNS,
NON EMPTY
  [order].[orderid].[orderid].AllMembers
* [order_spec].[spec].[spec].AllMembers ON ROWS
FROM [cube];
  1. SQL Server 2014 Management Studio:工作
  2. SQL Server 导入和导出数据向导:错误 0x80040E21
  3. Visual Studio 2015,数据流任务:错误 0x80040E21

查询 2

SELECT * FROM 
[cube].[cube_tab].[$spec2]
  1. SQL Server 2014 Management Studio:工作
  2. SQL Server 导入和导出数据向导:有效
  3. Visual Studio 2015,数据流任务:工作

另外请注意,当我使用“从一个或多个表或视图复制数据”选项时,我无法选择任何度量。

我也无法使用向导设置任何 openquery 过程。

【问题讨论】:

  • 是表格模型还是多维模型?
  • 它是一个多维 OLAP 多维数据集

标签: ssis connection mdx


【解决方案1】:

看起来你有 SQL 服务器

创建多维数据集数据库的链接服务器

然后您可以在 tsql 查询中编写 mdx 查询,如下所述:https://technet.microsoft.com/en-us/library/aa936673(v=sql.80).aspx

我在上面参考中使用了最后一个sn-p形式的脚本:

select * from openquery 
( LINKED_OLAP, 'select { measures.[unit sales] } on columns,
 non empty nest( nest( [customer location].[country].members, 
[gender].members ), [product category].[bread].children ) on rows 
from sales ') 

如果上面看起来有可能,那么我强烈建议直接进入以下内容 - 这是一个很棒的存储过程:

https://olapextensions.codeplex.com/


编辑

这不是标准的 mdx:

SELECT
  {[Measures].[measure1]} 
DIMENSION PROPERTIES 
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION] ON COLUMNS,
NON EMPTY 
  CROSSJOIN(
    [order].[orderid].[orderid].AllMembers,
    [order_spec].[spec].[spec].AllMembers
  )
DIMENSION PROPERTIES
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION] ON ROWS
FROM [cube]

这要简单得多:

SELECT
  [Measures].[measure1] ON COLUMNS,
NON EMPTY 
     [order].[orderid].[orderid].AllMembers,
   * [order_spec].[spec].[spec].AllMembers
  ON ROWS
FROM [cube];

也许这也足够了:

SELECT
  [Measures].[measure1] ON COLUMNS,
NON EMPTY 
     [order].[orderid].[orderid].MEMBERS,
   * [order_spec].[spec].[spec].MEMBERS
  ON ROWS
FROM [cube];

【讨论】:

  • 使用 SQL Server 导入/导出向导(2008 年、2014 年尝试)。现在收到错误消息:Query (1, 15) Parser: The syntax for 'Openquery' is wrong.
  • 补充:在 2014 SQL Server Management Studio 下运行 MDX 查询效果很好 -> 问题是直接将结果写入平面文件,因为数据很大,需要在 R Studio 或 SPSS 中处理
  • 您是否阅读了有关如何使用 Openquery 的文章?您需要首先设置一个工作的链接服务器(在 sql-server 中) - 给链接服务器一个名称,然后将上面的 LINKED_OLAP 替换为您的链接服务器的名称。您可以在 sql server 中将数据写入磁盘,然后使用 r 的 sql 包将其移动到 R-Studio
  • 在向导中的查询之前可以这样做吗:EXEC sp_dropserver 'LINKED_OLAP' EXEC sp_addlinkedserver @server='LINKED_OLAP', @srvproduct='', @provider='MSOLAP', @datasrc='xx.xx:51003', @catalog='cube_name' EXEC sp_tables_ex @table_server='cube_name' EXEC sp_columns_ex @table_server='LINKED_OLAP', @table_name='cube_name' Select * from openquery (LINKED_OLAP, 'SELECT xxx') 给我错误解析器:'sp_dropserver' 的语法不正确
  • 顺便说一句:我在 OLAP 服务器上只有读取权限,并且设置服务器只是为了查询 Cube 并将结果写入平面文件有点过度设计? -> 还想知道为什么当我只选择“从一个或多个表视图复制数据”时它运行平稳......它的连接与使用 MDX 查询的连接有什么区别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多