Sql-server – How to work with SQL Server CE and SQL Server 2008 Express

sql serversql-server-2008sql-server-cevisual-studio-2008

I have installed:

  • Visual C# 2008 Express
  • Visual Web Developer 2008 Express
  • Visual Studio 2008
  • SQL Server 2008 Express
  • SQL Server Management Studio

In Visual C# 2008 Express, I can "Add Item" and create a "Local Database" (.sdf file) or a "Service Based Database" (.mdf file).

Visual Studio 2008 is the same as Visual C# 2008 for applications but in Websites, the only way I can create .sdf or .mdf files is via the Database Explorer.

In Visual Web Developer 2008 Express, however, I can "Add Item" and ONLY create a "SQL Server Database" (.mdf file). Even the Database Explorer doesn't offer to create a SQL CE database.

Questions:

  • why the discrepency between the applications, is this normal or did something go wrong with my installations?
  • I never "installed SQL CE", where did it come from and how is it that I am able to create .sdf file?
  • How do you work with these in projects on a day to day basis, do you use Visual Studio to edit the databases or do you use SQL Server Management Studio?

Best Answer

I believe only Professional and above may create MSSQL CE databases.

SQL CE is installed with 2008 studio, I was surprised to see it myself and didn't see an option to exclude it.

Personally I use VS 2008 to add items to my project databases. Since it's open anyway I just use it. It provides most of the same functionality as Management Studio. If I am doing separate database work, I usually do it in Management studio.

The CE databases are pretty useless. They have a limited sub-set of types and functions. They do not support views or stored procedures. Basically they only store tables; I haven't attempted to create foreign keys in them.

There is no way to rename tables or columns. You must create a new table.

Once you create your database it must be manually added to your project.

You cannot directly create a LINQ to SQL class in VS2008 on a CE database. You need to use the command line tool sqlmetal (called from .NET console) to create the class for you.

I've had issues where the Class created for a CE database didn't work like a class built for a regular SQL database. Because of this I abandoned using a CE database all together.

It would be nice if there was a reliable way to use Linq to SQL on SQLite databases. SQLite is a great self-contained database not requiring any type of external engine.

Sorry I don't have any performance statistics for an SQL CE database.

I hope this is somewhat helpful.

Brett