请选择 进入手机版 | 继续访问电脑版

技术控

    今日:34| 主题:54605
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014

[复制链接]
清陌影 发表于 2016年10月15日 06:43
259 4

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
A client wanted to upgrade their SSAS model to SSAS 2016 to take advantage of some of the features of the new level 1200 compatibility model. But they weren’t yet ready to upgrade their SSIS server from SQL 2014. This presented a problem because they had been using the Analysis Services Processing Task to process their tabular model nightly. This processing task in SSIS 2014 uses the old Analysis Management Objects , which aren’t compatible with the new SSAS tabular models.
   Attempting to use the AS Processing Task results in the following error: “[Analysis Services Execute DDL Task] Error: This command cannot be executed on database ‘MySSASDB’ because it has been defined with StorageEngineUsed set to TabularMetadata. For databases in this mode, you must use Tabular APIs to administer the database”
  The reason for keeping SSAS processing in an SSIS package was because it kept consistent logging throughout their data refresh process. So we set out to find another solution.
  The new SSAS Tabular models use Tabular Model Scripting Language (JSON) rather than XMLA. A simple process full command in TMSL might look like:
  1. {
  2.   "refresh": {
  3.     "type": "full",
  4.     "objects": [
  5.       {
  6.         "database": "MySSASDB"
  7.       }
  8.     ]
  9.   }
  10. }
复制代码
  Just pasting the JSON to process the model into an Analysis Services Execute DDL Task didn’t work. It returned the error “DDL is not valid” .
  I asked around and received a couple of solutions that worked.
  Option 1 (my less preferred option): Create an OLEDB connection manager (rather than MSOLAP) and use an Execute SQL Task.
  You can set up an OLE DB connection that looks like the below.  Create a new connection manager and choose the OLE DB connection manager type. Change the provider to Microsoft OLE DB Provider for Analysis Service 13.0 and fill in your connection information.
   

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014-1-技术控-compatible,advantage,databases,following,presented

  You’ll see the connection manager show up in the Connection Managers pane looking like this:
   

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014-2-技术控-compatible,advantage,databases,following,presented

  Drag in an Execute SQL task, use the previously defined connection manager and paste in the JSON. This works just fine, but feels a bit too much like a workaround rather than a solid solution to me.
  Option #2: Use an Analysis Services Execute DDL task and wrap the JSON in XMLA

  Drag in an Analysis Services Execute DDL task. Create a new connection manager by choosing New Analysis Services Connection.
   

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014-3-技术控-compatible,advantage,databases,following,presented

  Edit your connection information, click OK, and you will end up with a connection manager that looks like this:
   

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014

Process Compatibility Level 1200 SSAS Tabular Model from SSIS 2014-4-技术控-compatible,advantage,databases,following,presented

  Use that connection manager in the AS Execute DDL task. We can use the same JSON from earlier and wrap it in XMLA as shown below.
  1. <Statement xmlns="urn:schemas-microsoft-com:xml-analysis">
  2. {
  3.   "refresh": {
  4.     "type": "full",
  5.     "objects": [
  6.       {
  7.         "database": "MySSASDB"
  8.       }
  9.     ]
  10.   }
  11. }

  12. </Statement>
复制代码
The XMLA/JSON command can be a direct source statement or placed in a variable and referenced from the task.
  To test that the model is successfully processed, you can execute the SSIS task or package and then run the following query against the DMV.
  1. Select [catalog_name], [date_modified], [compatibility_level]
  2. from $SYSTEM.DBSCHEMA_CATALOGS where [Catalog_Name] = 'MySSASDB'
复制代码
So if you are caught between versions in SSIS and SSAS, do not despair. You can still process your new SSAS Tabular model from an SSIS package.



上一篇:a single byte write opened a root execution exploit
下一篇:Books Programmers Don&#x27;t Really Read (2008)
姜丽萍 发表于 2016年10月17日 12:05
站位支持
回复 支持 反对

使用道具 举报

Lover. 发表于 2016年10月17日 13:30
我是耶稣他儿子,椰子!
回复 支持 反对

使用道具 举报

gao3669858 发表于 2016年10月21日 03:02
走自己的路,让别人打车去吧。  
回复 支持 反对

使用道具 举报

Vrince 发表于 2016年10月22日 13:47
边撸边过
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )

© 2001-2017 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表