using SQL for small apps

I’ve been programming against Access databases under VB6 for a while, but since everyone is talking about moving to the latest and greatest of .NET, SQL, etc. I’ve been trying to learn these new technologies, however, I’m unsure if they’re right for me.

My database programming has been on a small scale, using databases for personal applications, for example, the way Adobe Photoshop Album uses an MDB file to keep track of all the tags and pictures in it’s database. Another common scenario where I utilize MDB files is when I have reasonably complex user settings that need to be saved and manipulated. I generally don’t program for large scale, multi-user, enterprise scenarios. I don’t have to worry about multiple users accessing the data, or heavy loads, or gigantic datasets, etc.

Considering that fact, is it worth it for me to switch over to using SQL databases I’m finding that the learning curve is quite steep and although programming using that model may have advantages, they don’t seem to me to be compelling for my needs. Additionally, one major drawback that I’m finding of switching over to SQL is the complexity that it adds to my deployment and debugging. From what I understand I can’t just distribute my exe and database file to be dumped into a folder, but the user has to install a whole server on their system, and the database has to be installed for that instance, and I need to concern myself with instances, access permissions, security issues, etc. Sounds like more trouble than its worth! And the user is often annoyed that there’s now another major service constantly running in the background of their system (affecting its performance), even when the app that needed it is not running. Another drawback: currently, using Access files, if the user of my app is having problems, I can have them just email me the mdb file so I can see what’s going on and program against the same scenario they may be having, but from what I understand, using SQL server, that’s a much more complicated process, to extract the SQL database, and transport it to someone else who will then have to insert into their server, etc. I may not be understanding the details exactly right, but if it’s something like that, it just doesn’t seem to be worth the trouble.

Any SQL evangelists out there than can help me understand the situation better, explain how I’m misunderstanding the technology and why these aren’t really problems, etc. Is it possible that SQL just might not be right for me




Answer this question

using SQL for small apps

  • Roger Cheng - MSFT

    For small scale things you could also just use the .NET DataSet instead of Access. This would make life easier for deployment versus Access. .NET DataSet has tons of features it's like a mini-database system. You can serialize it to XML for persistence. Just an idea.

  • strDisplayName

    If you're using databases on a small, single user scale, then you may well be better off with MDB databases, rather than having to set up SQL Server.

    You're right about all the drawbacks you mention.

    Personally, I would never use Access, because it's never been a 'real' database. I believe stored proc support exists now, but it's too late, IMO. However, if you're happy using it, it sure sounds like the easiest solution to your problems. You should never upgrade just because something is 'new' or people told you it was 'cool'. If Access meets your needs, then you should stick with it until something else provides a compelling case to move.



  • John.Padilla

    Well, the main reason I want to move to it, is not just because it's new, but because programming against it is easier, more efficient, flexible, etc. However, it seems to me that the drawbacks I mentioned of infrastructure issues and deployment factors seem to outweigh the benefits of programming with it.


  • StevenFowler

    SQL Server is definately better to code against. I distribute apps with MSDE, it's not really a big deal. I certainly can't easily get clients to send me a copy of their database, however. Instead, I have reporting built in that tells me most of the info in the database, if I need it.



  • using SQL for small apps