Jet database engine/mdb file - issues?

Hi,

I have used the Jet database engine in .NET for an application in the past, and did not have any issues at all. I am working on a much bigger application, but can't see any obvious pitfalls (a few million rows perhaps is all I anticipate at worst). Moreover, this is a Windows application, so I don't have many other choices, it seems.

I was wondering when this Jet database/mdb file solution would give out and force me to use bigger iron. I would like to live with the simplicity and elegance of this as long as possible. Any pointers on when to rethink this approach would be highly appreciated. 

Thanks,

Regards,

Srini


Answer this question

Jet database engine/mdb file - issues?

  • Miljac

    Thanks again; the MSDE solution is very good (knock on wood). By way of an FYI to others, the database I saw originally had nothing to do with my VS.NET installation. It came in with my Outlook, which had a business contact manager, which relied on a BCM database on an MSDE server apparently. I downloaded MSDE 2000A, and installed instances using the command line script provided in the URL. Everything worked like a charm.

    Incidentally, I found a free utility on the web called SQL Buddy that I use to probe the database created. If you are OK with actually typing SQL to create tables and data (I have been spoiled by VS.NET and Access), this tool beats a command line approach hands-down.


  • bobby_macnair

    Access databases tend to run very slow when they have a few million rows...also they are limited to 2 GB worth of data...if you think you might need more than that you would definitely want to use something other than Access...maybe you should consider MSDE...it is a free, but limited version of SQL Server that would handle data much better than Access...you could also consider MySql, which is free under the GPL license, or you can buy it if you do not want to abide by GPL...its cheaper than other DBMS such as SQL Server or Oracle...
  • MarcStevenson

    What is the file size of the database   A few million records doesn't say much without knowing the approx size of each record.

    This really sounds like a job for SQL.  Either MSDE (if the filesize and concurrent user count are small enough), or SQL Server Standard.

    You might look over the thread at:
    http://www.windowsforms.com/Forums/ShowPost.aspx tabIndex=1&tabId=41&PostID=23456

    Note that Microsoft states:  "Microsoft Jet is not intended to be used with high-stress, high-concurrency, 24x7 server applications, such as Web, commerce, transactional, and messaging servers. "  (http://support.microsoft.com/default.aspx scid=kb;en-us;q300216)

    SQL is just about as easy to use as Jet (there's only a few minor syntax changes for most statements).  You can still use ADO.Net with a SQL provider if you don't want to move to pure .Net Data Access.

  • Jojy

    Thanks for the information and advice. I was able to add databases as well. I had to go to my firewall and unblock the sql server service manager. I will stick with Jet but it seems only for a short while, till I go to MSDE - thanks for introducing me to it. I have only three more questions.

    (i) Can I assume that my deployment project will be able to take in the database dependency and automatically put it in the user's machine's MSDE when it is installed

    (ii) When I read up on MSDE, (on the MS URL that you provided) I noticed that the database maxed out at 2 GB. One other response on this thread quoted the same number for Jet as well. In that case, in MSDE being "industrial strength" relative to Jet, what am I gaining, if I have only one database on the server

    (iii) Is it legal to put a copy of MSDE on the user machine  The thread you pointed to seems to offer mixed opinions (viz. "MS wont like it ..."). 

    Thank you very much for your responses.

    Regards.

  • Patel Mayur

    Thanks for your response.  Here are the details that you needed for an answer.

    The file size of the database is unlikely to exceed a few hundred MB's. Most of the time, it may not even get to a hundred MB. As for your other questions:
    high-stress: I don't know what that translates to. But my application is not going to be doing high stress read-writes to the db. The db is just a convenient way to store my data, and do incremental saves which I cannot with other means, and to impose relationships.
    high-concurency: none. This is a single-user application.
    24X7: Not at all.
    Web, commerce, transactional, messaging: None

    Significantly, I am limited to a PC. Putting a SQLserver for a single user seems daunting.

    But having said all that, I am quite interested in exploring the MSDE option after you pointed me to it. I studied your responses on the other thread. I did find an MSDE on my machine (it has VS.NET 2003 Professional editioninstalled). Earlier, I used to wonder why I had a free SQL server running on my machine; now I know. :-) It also seems that porting a Jet model to the MSDE model is a relatively simple affair. Is that correct

    After reading your thread, I played around with the MSDE and had another, more technical question. I found that I could only create a table on the tempdb and nowhere else. When I tried to create a db or tables elsewhere, I got an ADO error; the complaint was that it could not obtain an exclusive lock on the MODEL. Is this normal because I am using a stripped down version of the database, or is it something else i.e. my novice status is showing

    Thanks & Regards.



  • yadav.shivam

    You're quite welcome for the info; glad it was of use.

    To answer your questions:

    1.  You can create a deployment project that will create a database in MSDE during your application's installation.  I've seen it done but I'm not sure how it's done.  I don't know if you need to write an installer app that creates the database and run it as part of your installation or if the depolyment project itself can handle this.  I'd post this question on the deployment forum.

    2.  You'll find that 2GB is a common file size maximum.  This is mostly a leftover from the FAT16 days.  Even though Access and MSDE have a common maximum file size, the performance of the SQL data engine compared to the Jet data engine is much greater.  Since you will have over a million records to deal with, you'll find that MSDE returns queries and performs updates much faster than Jet - Jet can also become unreliable and buggy at those file sizes.

    3.  Yes, it is perfectly legal; that is what the software is for.  Someone made the comment in the other thread that Microsoft might not like multiple users all pointing to a single instance of MSDE, but they don't mind becuase the MSDE engine will not perform well with more than 5 or so users (except when those users are coming from IIS, then you get as many as 25 before performance is impacted).

    Hope that helps!  Good luck!!

  • Hrcko

    It sounds like you might still get away with using Access if your PC is pretty fast (~ P4 2.2+ Class), although MSDE would be better and worth the conversion.

    While its true that its a relatively simple affair to migrate from Access to Sql, you may have found your first difference in the way you are trying to add a table.  

    You shouldn't get an error; you are allowed to add new databases to the MSDE SQL Server.  If you use the server explorer in Visual Studio, you should be able to add new databases to your SQL instance.

  • Jet database engine/mdb file - issues?