Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

Erstes CLR Assembly für Microsoft Analysis Services (SSAS)

19. Januar 2010 , Geschrieben von Olaf Helper Veröffentlicht in #.NET

Nachdem das Erstellen und Verwenden von eigenen CLR Assemblies im Microsoft SQL Server Datenbankmodul gut funktioniert hat, wie eine eigene Aggregation oder ein Datenexport, wollte ich eigene Assemblies analog mal mit dem Microsoft Analysis Services versuchen.

Leider gibt es weniger Dokumentation zu dem Thema als für den Einsatzbereich des Datenbankmodules. Von Microsoft gibt es zum einen den TechNet Artikel User Defined Functions and Stored Procedures, der die Vorgehensweise beschreibt und dann noch einen kurzen MSDN Artikel Defining Stored Procedures.

Für ein eigenes Assembly wird zunächst das Namespace Microsoft.AnalysisServices.AdomdServer benötigt. Dieses ist natürlich nicht im GAC enthalten, man muss einen Verweis auf die Datei „msmgdsrv.dll“ setzten. Die wiederum findet man etwas versteckt im OLAP\BIN Ordner des Programm-Verzeichnisses der benannten Instanz. Zum Beispiel für meine Instanz „SQL105CTP3“ von der MSAS Version 10.5 ( = 10_50) =>

C:\Program Files\Microsoft SQL Server\MSAS10_50.SQL105CTP3\OLAP\bin\

Über die statische Klasse „Context“ kann man die Verbindungs-Kontext bezogenen Objekte und Verbindung nutzen.

Entgegen einer Assembly fürs Datenbankmodul gibt es keine spezielle Methoden-Properties wie <SqlProcedure(Name:="spNamen")>; wobei die eh optional, wenn auch sinnig sind.

Dafür arbeitet man auch nicht mit speziellen SqlTypes, sondern nur mit den normalen CLS Typen.

Ein ganz einfaches Projekt als Beispiel gibt es hier zum Download: OlafHelper.Ssas.Info

Wie immer ist es ein Microsoft Visual Basic 2008 Express Edition Projekt mit allem dabei, was nötig ist.

 Das erste Beispiel ist wirklich sehr einfach gehalten; nur um zu testen, ob es denn überhaupt funktioniert. Es sind nur ein paar Zeilen, die vom Aufbau her so aussehen: 
   
 Imports AMOS = Microsoft.AnalysisServices.AdomdServer 
   
 Namespace OlafHelper.Ssas 
   
  ''' <summary> 
  ''' CLR Assembly Beispiel für. 
  ''' </summary> 
  Partial Public NotInheritable Class Info 
   
  ''' <summary> 
  ''' Liefert den Namen des Servers der aktuellen Verbindung. 
  ''' </summary> 
  <CLSCompliant(False)> _ 
  Public Shared Function ServerName() As String 
  Return AMOS.Context.Server.Name 
  End Function 
   
  End Class 
   
 End Namespace 

Diesen Post teilen

Repost 0

Kommentiere diesen Post