Het Microsoft SQL Server Compact (SQL CE) database type, herkenbaar aan een .sdf bestandsextensie, is verouderd en Microsoft raadt gebruikers aan te upgraden naar SQL Server. Maar hoe zet je een SQL CE database om naar SQL Server? Ik laat het je zien in dit artikel.

Hoe kan ik een SqlCe-database converteren naar een Microsoft SQL Server database?

Als voorbeeld converteer ik het SqlCe-databasebestand van een Umbraco-website. Umbraco is een bekend en veelgebruikt .NET CMS. Dit CMS werkt standaard prima met SqlCe-databases en ik vind het daarom een mooi voorbeeld voor het omzetten van een Umbraco SqlCe-database naar een SQL Server database.

Op reilink.nl heb ik (had ik) – ter leering ende vermeack – een Umbraco 8.6.1 website met standaard starter kit The Starter Kit en SqlCe-database geplaatst. In dit artikel zal ik deze omzetten naar SQL Server en je laten zien welke connectiestring in het web.config-bestand moet worden aangepast. Waar mogelijk gebruik ik ongecensureerde schermafbeeldingen, de inhoud op reilink.nl verwijder ik hierna toch weer >:-)

Voeg ~/ads.txt toe aan Umbraco’s Umbraco.Core.ReservedPaths web.config key voor Google Adsense’s ads.txt-bestand: <add key="Umbraco.Core.ReservedPaths" value="~/ads.txt" /> (heb je hulp nodig met Google AdSense in WordPress?)

Benodigdheden

  • Zorg ervoor dat je SQL Server Management Studio (SSMS) geïnstalleerd hebt. Download het hier.
  • Download en installeer ook de Microsoft SQL Server Compact 4.0 SP1 driver hier.
  • Download en installeer een speciale conversietool “ExportSqlCE40.exe” van GitHub hier. Pak het .zip-bestand uit op een locatie die makkelijk bereikbaar is via de opdrachtprompt (cmd.exe). Het is een enkel uitvoerbaar bestand.
  • En uiteraard moet je een kopie van je database op je lokale systeem hebben staan. Download dat bestand (~/App_data/Umbraco.sdf) bijvoorbeeld via FTP.
  • Download ook het Umbraco web.config-bestand van je website.
  • SQL Server database inloggegevens

ExportSqlCE40.exe

ExportSqlCE40.exe is de conversietool om een SqlCe .sdf-databasebestand om te zetten naar een .sql-bestand dat door SQL Server ingelezen kan worden.

Voer het bestand uit, in cmd.exe, zonder parameters om de helpinformatie op te vragen:

C:\Users\janreilink\source>ExportSqlCe40.exe
Usage : (To script an entire database)
ExportSqlCe40.exe [SQL CE Connection String] [output file location] [[exclude]] [[schemaonly|dataonly|dataonlyserver]] [[saveimages]] [[sqlazure]]
(exclude, schemaonly|dataonly, saveimages and sqlazure are optional parameters)

Examples :
ExportSqlCe40.exe "Data Source=D:\Northwind.sdf;" Northwind.sql

ExportSqlCe40.exe "Data Source=D:\Northwind.sdf;" Northwind.sql exclude:Shippers,Suppliers

Usage: (To create a schema diff script)
ExportSqlCe40.exe diff [SQL Compact or SQL Server Connection String (source)]
[SQL Compact or SQL Server Connection String (target)] [output file location]
Example :
ExportSqlCe40.exe diff "Data Source=D:\Northwind.sdf;" "Data Source=.\SQLEXPRESS,Inital Catalog=Northwind" NorthwindDiff.sql


Usage: (To create a database graph)
ExportSqlCe40.exe dgml [SQL Compact or SQL Server Connection String (source)] [output file location]
Example :
ExportSqlCe40.exe dgml "Data Source=D:\Northwind.sdf;" C:\temp\northwind.dgml


Usage : (To script an entire database to SQLite format)
ExportSqlCe40.exe [SQL CE Connection String] [output file location] [sqlite]

Examples :
ExportSqlCe40.exe "Data Source=D:\Northwind.sdf;" Northwind.sql sqlite

Hieruit kun je afleiden dat je alleen maar het volgende commando hoeft in te voeren:

ExportSqlCe40.exe "Data Source=umbraco\App_Data\Umbraco.sdf" umbraco.sql

Het umbraco\ gedeelte is specifiek voor mijn omgeving. In plaats van umbraco.sql mag je ook een andere bestandsnaam opgeven.

De opdracht geeft de volgende uitvoer, als het goed gaat:

Initializing....
Generating the tables....
Generating the data....
Generating the primary keys....
Generating the indexes....
Generating the foreign keys....
Sent script to output file(s) : umbraco.sql in 618 ms

en het umbraco.sql-bestand staat in dezelfde directory:

Het umbraco.sql-bestand kun je hierna importeren in SQL Server Management Studio (SSMS).

Importeer het .sql-exportbestand in SQL Server via SSMS

Om het geëxporteerde .sql-bestand in SQL Server te importeren met SQL Server Management Service, maak je eerst verbinding met je database.

Start Microsoft SQL Server Management Studio 18
Start Microsoft SQL Server Management Studio 18
vul de gevraagde SQL Server authenticatiegegevens in
vul de gevraagde SQL Server authenticatiegegevens in
Contained Databases? Vul hier jouw databasenaam in
Contained Databases? Vul hier jouw databasenaam in
Klik Connect
Klik Connect

Hierna kun je het .sql-bestand inlezen via File > Open > File… (sneltoets CTRL+O)

Gebruik de Parse-functie om het ingeladen .sql-bestand te valideren op eventuele fouten
Gebruik de Parse-functie om het ingeladen .sql-bestand te valideren op eventuele fouten
Execute de SQL statements als Parse geen fouten opleverde
Execute de SQL statements als Parse geen fouten opleverde
de uitvoer laat het resultaat van de statements zien
de uitvoer laat het resultaat van de statements zien

Als alle statements succesvol zijn uitgevoerd dan is de database geïmporteerd:

Umbraco’s databasetabellen zichtbaar in SQL Server onder Tables
Umbraco’s databasetabellen zichtbaar in SQL Server onder Tables

Umbraco connectiestring aanpassen in web.config

Om Umbraco gebruik te laten maken van de nieuwe database moet je de connectiestring aanpassen in het web.config-bestand. Voor SqlCe ziet deze er zo uit:

<connectionStrings>
 <remove name="umbracoDbDSN" />
 <add name="umbracoDbDSN" connectionString="Data Source=|DataDirectory|\Umbraco.sdf;Flush Interval=1;" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Verander deze connectionstring naar een ASP.NET connectiestring naar SQL Server:

<add name="umbracoDbDSN"
 connectionString="Data Source=database server hostnaam;
 Initial Catalog=databasenaam;
 User Id=gebruikersnaam;
 Password=wachtwoord"
 providerName="System.Data.SqlClient"
/>

Vervang de waarden ‘database server hostnaam’, ‘databasenaam’, ‘gebruikersnaam’ en ‘wachtwoord’ door de juiste gegevens.

Denk je ook aan een SSL-verbinding naar je SQL-database? Beveilig Umbraco’s SQL Server verbinding met SSL.

Upload je gewijzigde web.config bestand via FTP, en hernoem daarna het ~/App_Data/Umbraco.sdf bestand. Als het goed is functioneert de website dan nog steeds en kun je in Umbraco inloggen met je inloggegevens. Gefeliciteerd, je hebt succesvol een SqlCe database geconverteerd naar een SQL Server database!

Microsofts ondersteuning op SqlCe is gestop in juli 2021. Daarom is het net als het converteren van een Access-database naar MySQL, belangrijk om over te stappen op SQL Server of MariaDB (MySQL).

Wat vond je van dit artikel? Laat het me weten in een reactie, thanks! :)

Show 1 Comment

1 Comment

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *