Je bent hier: ITFAQ.nl » Webdevelopment » SqlCe-database omzetten naar SQL Server

SqlCe-database omzetten naar SQL Server

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

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.

Voorbeeld Umbraco SqlCe-database converteren naar SQL Server

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 Saotn.org heb ik vaker geschreven over Umbraco. Zie bijvoorbeeld deze 11 tips om Umbraco te optimaliseren, of het configureren van SQL Server sessionState in Umbraco.

Op reilink.nl heb 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 >:-)

Protip: 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

Let op: 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
vul de gevraagde SQL Server authenticatiegegevens in
Contained Databases? Vul hier jouw databasenaam in
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
Execute de SQL statements als Parse geen fouten opleverde
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 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" />

Let op: vervang de waarden ‘database server hostnaam’, ‘databasenaam’, ‘gebruikersnaam’ en ‘wachtwoord’ door de juiste gegevens.

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!

Belangrijk: Microsofts ondersteuning op SqlCe stopt 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! :)

Geef een reactie

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