Multi-client SSAS deployment
What's MDS got to do with?
Our Sponsors
Who am I?
Gabi Münster
BI consultant at oh22data AG since 2010
Experience with SQL Server since version
2000
Main topics: SSAS (Multidimensional/Tabular),
SSRS, MDS, PowerBI
Speaker at chapter meetings and national and
international conferences
Agenda
Multi-client SSAS deployment
Motivation
A little bit of theory
How can a config look like?
How to deploy a multidimensional database with AMO?
How to deploy a Tabular model with TOM?
Resumé
Motivation
Enhancement of testing possibilites
Enabling of staff
Realization of multi-szenario deployments
Version control
Added value for documentation
A little bit of theory (I)
1.
Understand the SSAS data model
1.
Very flexible
2.
Lots of objects
3.
Large variety of attributes
4.
Deeply interlaced
Very complex
A little bit of theory (II)
2. Choose the language:
- ASSL => XML based
- AMO => .NET class library
Server srv = ServerConnect(strConn);
Database db = CreateDatabase(srv, strDBName, true);
if (db == null)
{
return "Failure";
}
DataSource ds = CreateDataSource(db, "AdventureWorksDW2014",
"Provider=SQLNCLI11.1;Data Source=.\\SQL2016;Integrated Security=SSPI;Initial
Catalog=AdventureWorksDW2014");
if (ds == null)
{
return "Failure";
}
<Server>
<Name/>
<ID/>
<Description/>
<Version/>
<Edition/>
<Databases>
<Database>
<Name/>
<ID/>
<CreatedTimestamp/>
<LastSchemaUpdate/>
…
<Dimensions>
<Dimension>
<Name/>
<ID/>
…
<Source>
<!-- Binding -->
</Source>
…
<DimensionPermissions>
<DimensionPermission xsi:type="Permission">
...
...
...
...
</Dimension>
</Dimensions>
<Cubes>
<Cube>
<Name/>
<ID/>
</Databases>
<Roles>
<Role>
<Name/>
<ID/>
</Role>
</Roles>
...
</Server>
A little bit of theory (III)
Understand the data model
1.
1.
Meant for comprehensibility
2.
Less objects
3.
Less interdependencies
4.
Easier to understand and
maintain
A little bit of theory (IV)
2. Choose the language:
- TMSL => JSON based
- TOM => .NET class library
// Generate a new database name and use GetNewName
// to ensure the database name is unique.
//
string newDatabaseName =
server.Databases.GetNewName(strDatabaseName);
string newDatabaseID =
server.Databases.GetNewID(strDatabaseID);
//
// Instantiate a new
// Microsoft.AnalysisServices.Tabular.Database object.
//
var dbWithTable = new Microsoft.AnalysisServices.Tabular.Database()
{
Name = newDatabaseName,
ID = newDatabaseID,
CompatibilityLevel = 1200,
StorageEngineUsed = StorageEngineUsed.TabularMetadata,
};
How can a config look like?
1.
2.
3.
What of the data models are you using?
What is „static“, what needs configuration?
Build step by step
Demo
How to deploy a multidimensional database with
AMO?
1.
2.
Example: .Net
Choose integration:
1.
2.
3.
Stand-alone application
Assembly to use in SSIS
…
Demo
How to deploy a Tabular model with AMO?
1.
2.
Example: .Net
Choose integration:
1.
2.
3.
Stand-alone application
Assembly to use in SSIS
…
Demo
Resumé
Criteria
Assessment
Funktionality
Covers all necessary functionality
Implementation effort
High!
Potential benefit
Also high
Cost/benefit
evaluation necessary
Especially meaningful for consulting companies with
different customers (reusability)
Some useful links
AMO für multidimensionale Datenbanken:
AMO Concepts and AMO Model
ASSL
Analysis Services Scripting Language (ASSL for XMLA)
AMO für Tabular (TOM)
Introduction to the Tabular Object Model (TOM) in Analysis Services AMO
TMSL
Tabular Model Scripting Language (TMSL) Reference
Any questions?
How did you like it?
Please give us feedback!
to the event:
www.sqlsaturday.com/579/eventeval.aspx
to me as a speaker:
www.sqlsaturday.com/579/sessions/sessionevaluation.aspx
Ressources
SQL Server 2016 in 15 Minuten
https://channel9.msdn.com/Series/SQLServer-2016-in-15-Minuten
SQL PASS Austria Homepage
http://austria.sqlpass.org
SQL PASS Austria Meeting Archive
http://sdrv.ms/ZFVdnM
Thank You!
© Copyright 2026 Paperzz