In einem Power BI-Modell in Power BI Desktop sind die Quelldaten ja stark komprimiert, so dass man damit auch unterwegs und offline weiter analysieren, Berichte bauen und Berechnungen einfügen kann. Will man aber neue Tabellen hinzufügen, die Daten grundsätzlich aktualisieren oder z.B. an der SQL-Abfrage arbeiten, die die Daten holt, dann braucht man in diesem Moment einen Online-Zugriff auf die Datenquelle, also eine lokale, leistungsfähige Datenbank, die auch keine Grenze von einer Million Zeilen kennt!

Jetzt aber nicht schon wieder Access benutzen, denn das kostet ja was, und dafür eignet sich ganz hervorragend die kostenlose SQL Server Express LocalDB, die es seit SQL 2012 gibt. Dann hat man eigentlich einen vollwertigen SQL Server auf dem Client-Computer laufen, aber eben nicht als Dienst, sondern als Programm. Der kleine Kobold bietet alle Features, die man von seinem großen Bruder kennt, aber eben ohne grafische Oberfläche! Der Riesen-Vorteil ist natürlich, dass man nicht für das mobile Arbeiten extra eine andere Datenbank braucht: man kann sogar Datenbank-Backups vom “vollwertigen” Server lokal einspielen, oder – vielleicht noch besser – die .mdf-Datei der Quelldatenbank wegkopieren und an die LocalDB-Instanz “anhängen”. (Natürlich könnte man sich auch einfach das ebenfalls kostenlose SQL Server Management Studio installieren und die LocalDB damit verwalten, aber das ist ja fast schon unsportlich).

 

Download und Installation der LocalDB

Man kann sie für SQL Server 2016 unter SQL Server-Downloads herunterladen, dort wird die Express Edition angeboten, und nach dem Starten der Installation wählt man den “benutzerdefinierten” Pfad, was einem zunächst einmal die Installationsdateien auf die lokale Festplatte kopiert. Direkt im SQL Server-Installationscenter braucht man dann wirklich nur “LocalDB” auszuwählen, etwa so:

Dann läuft die restliche Installation in der Regel einfach durch! Für ältere SQL-Versionen ist die LocalDB als Teil des SQL Server Feature Pack auch einzeln im Download erhältlich (als “SQLLocalDB.msi”).

 

Starten und Verwalten der LocalDB

Ohne grafische Tools muss man dann zwei Sachen tun: zuerst muss SQLLocalDB (am besten von der Kommandozeile aus) gestartet werden. Das Kommando dazu ist:

sqllocaldb start MSSQLLocalDB

MSSQLLocalDB ist dabei der Name der LocalDB-Instanz, und es könnte mehrere geben, wenn andere Tools auch schon eine Instanz gestartet haben!

Als Nächstes muss dann die SQL-Datenbank-Datei der Quelldatenbank “manuell” angehängt werden. Der sichere Weg zum Anhängen ist das SQL Server-Kommandozeilenwerkzeug SQLCMD, aber das muss man erst installieren. Also erst mal als Voraussetzung den Microsoft® ODBC Driver 13.1 für SQL Server® – Windows installieren, man findet ihn hier: Microsoft® ODBC Driver 13.1 for SQL Server®. Danach dann das Paket MSSqlCmdLnUtils; da ist SQLCMD dabei.Die Software liegt für SQL 2017 hier: MSSqlCmdLnUtils

Dann kann man sich mit dem lokal laufenden “Server” verbinden, und zwar so:

"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\"SQLCMD.EXE -S (localdb)\MSSQLLocalDB -E

Und dann gleich einmalig die Datenbank anhängen (wiederherstellen ginge natürlich auch):

sp_attach_single_file_db TSQLV4, 'C:\DBFILES\TSQLV4.MDF'
GO

Wenn das Logfile (.ldf) noch nicht existieren sollte, wird es flugs mit erzeugt.

 

Verbinden mit LocalDB von Power BI Desktop aus

Eine Benutzerkennung benötigt man keine, man verwendet den eigenen Windows-Nutzer.
Wer alternativ lieber Excel mit dem PowerPivot-AddIn verwenden möchte, um sein Datenmodell zu entwerfen, kann sich verbinden mit:

Ab jetzt geht es genauso weiter wie bei einem “echten” SQL Server, und es dürfte auch alles genauso funktionieren. Ideal für lange Flüge oder Bahnfahrten, bei denen man keine Verbindung zum Server hat! Und ist man wieder im Netzwerk, ändert man einfach den Servernamen und entfernt dahinter den Namen der lokalen Instanz “MSSQLLocalDB”.

 

Noch genialer, funktioniert aber (noch) nicht: AttachDBFilename

Normalerweise ist LocalDB sogar noch cleverer: man muss die Datenbank eigentlich gar nicht extra “anhängen”, sondern übergibt einfach den Pfad zur .mdf-Datei der LocalDB in der Verbindungszeichenfolge, als Inhalt des Parameters “AttachDBFileName”, und sie wird automatisch angehängt, etwa so:

Server=(localdb)\MSSQLLocalDB;AttachDbFileName=D:\DBFiles\TrudelflugDB.mdf;

Leider funktioniert dies über die Power Query-Komponente (aka “Daten abrufen”) von Power BI nicht so einfach. Bei der Datenquelle “SQL Server Datenbank” wird dieser Parameter nicht abfragt; bei der OLE DB-Verbindung ist es mir nicht gelungen, diese “extended property” erfolgreich mitzugeben! Es könnte so einfach sein, denn hier kann man die Verbindungszeichenfolge einfach eintippen:

Leider scheitert das Anhängen aber immer mit der Fehlermeldung  “OLE DB: Cannot attach the file ‘‪C:\DBFiles\TrudelflugDB.mdf’ as database ‘TrudelflugDB’.” Auf Hinweise, die zur Lösung dieses Problems führen, ist ein Leuchtturm 1917-Notizbuch in schwarz ausgesetzt!