På Slack framfördes en fråga om Microsoft SQL och QGIS, som fick mig att bli intresserad av just den databasen som lagringsalternativ till QGIS. QGIS är från början byggt för att hantera PostGIS, men programmet har utvecklats enormt och har nu stöd för flera olika typer av databaser, inklusive MS SQL. Tidigare har man varit tvungen att lägga till en ”rumslig” komponent till databasen för att det skall gå att hantera geodata, men nu verkar det finnas två olika datatyper för detta som standard. Hur detta fungerar med QGIS tänkte jag titta på i detta inlägg. Det blev dock inte någon direkt framgång…
När jag började planera för detta så var jag ganska säker på att jag skulle installera MS SQL Express på en virtuell Windowsklient och ta det därifrån, men på Microsofts webbsida hittade jag något som fick mig på bättre tankar.
Jag kan definitivt strunta i Windows, och det verkar som jag kan installera med Docker, vilket gör det väldigt smidigt.
Via adressen https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker ges instruktioner för att ladda hem, starta och sätta upp den första databasen.
sudo docker pull microsoft/mssql-server-linux:2017-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
-p 1401:1433 --name sql1 \
-d microsoft/mssql-server-linux:2017-latest
Lösenordet skall uppfylla vissa kriterier och exempelvis ställer kommandot in servern att lyssna på port 1433, men mer om detaljerna i kommandot går att läsa på sidan om man följer länken tidigare.
sudo docker ps -a
Testar de installerade containrarna och bör ge indikation om att SQL är igång.
För att ”hoppa in” i servern så skriver man in följande kommando:
sudo docker exec -it sql1 "bash"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
När man väl är inne i servern så kan man skapa en ny databas, och även lista befintliga som kontroll.
Notera att man måste ge kommandot ”GO” innan man ser något i terminalen. För vissa typer av databaser kan man skapa dessa inifrån QGIS, men drivrutinen från GDAL stödjer vad jag vet inte detta, så databasen måste skapas som ovan, eller via annat databasverktyg.
Det var här någonstans som timmar av frustration flöt iväg. Jag hittade ett skript för att skapa ”geometry_column” tabell i databasen, och att jag behöver ansluta på port 1401 för att komma in i Docker containern, men sedan tog det stopp.
Jag har provat väldigt många olika inställningar och alternativ, med och utan geometry_columns ikryssat. Men inget hjälper. Jag börjar misstänka att programmet inte är kompilerat med rätt QODBC drivrutiner, vilket jag inte har en aning om jag kan åtgärda. Jag kan tänka mig mängder av andra problem också, men jag har inte tid att prova mera.
Nu blir det inte mer experiment med Microsoft på Linux för den här gången. Jag behöver absolut inte MSSQL själv, när det finns PostgreSQL och PostGIS!
Hoppas att andra har bättre lycka.
Det saknas några bibliotek för att qgis ska kunna använda sql server i Linux.
Se: https://gist.github.com/mdouchin/64f7733a3c4ecfe441f65d5529351a30
qgis3 använder qt5 så man får byta ut biblioteken i länken mot motsvarande qt5 istället.
Jag la till libqt5sql5 libqt5sql5-tds libqt5sql5-odbc lite osäker dock vilka som är nödvändiga.
MS SQL standard, uppkopplad mot QGIS v2.X och v3.X fungerar iaf väldigt bra på en Windows plattform.
Börjat migrera en del filbaserad data till vår produktionsmiljö på SQLSERVER, där väldigt få nackdelar har upptäckts, än så länge.
Hade tagit PostgreSQL/PostGIS över MSSQL varje dag men IT-plattformen ställer vissa begränsningar, när det kommer till att kunna hålla support på produktionsmiljön.
Ser framemot dagen då Linux blir vanligare att supportera, även på mindre IT-plattformar/avdelningar.