views:

578

answers:

12

An IT Manager is not allowing the use of SQL Server with an ASP.NET website being developed. The current setup being replaced is a php site connecting to a Microsoft Access database. I have a few reasons of my own as to why SQL should be used, but would like as many strong arguments as possible (student vs. IT Man.). Does anyone have any strong arguments on why SQL should be used? Particularly posed towards an IT Manager who has stated "this is the way we have been doing it, and [it] has been working."

Thanks in advance!

UPDATE

In the interest of 'unloading' this question... If you would recommend keeping Access, when and why?

+7  A: 

Do a load test on your finished product and prove that Access isn't meant for powering websites.

Write your code so that you can change out the database back end easily. Then when access fails migrate your data to a real db, or MySQL if you have to.

Here are some Microsoft Web server stress tools

For the record, it is possible to send mostly SQL commands to the database and not keep an active connection open, thereby allowing far more than 6 or 7 connections at once, but the fact is that access just isn't meant to do it. So the "it works fine" point is like saying it is fine to clean your floor with sticky tape: it works, but isn't the right tool for the job.

UPDATED ANSWER TO UPDATED QUESTION:

Really the key here is the separation of data access in your code. You should be able to more or less have the data database structure in any number of DBMS. Things can get complicated, but a map of tables should be universal. Then should access not work, decide to use a different database.

Access CAN be used in kinda high traffic sites. With the SQL statement only routines I was able to build an e-commerce site that did a couple million a year in sales, and had 60K visitors a month. It is possible, but maybe not ideal. Those aren't big numbers, but they are the biggest for any site I have been a part of.

Keep access if IT Manager is too busy to maintain another server, or unwilling to spend time configuring one. Ultimately guessing does nothing, and testing tells you everything you need to know. Test and make decisions on the results.

MrChrister
"a real db, or MySQL is you have to" -- oooh, burn!
womble
I kid. I use MySQL at my job, I just like MS tools better
MrChrister
Good idea. Fortunately I have access to VS - Test Edition, so the load test should be easy enough.
ccook
Thank you for the updated Answer. I think I am leaning more to keeping it
ccook
All code and all projects are ongoing, so plan to update it (or make it update-able for whoever follows you)
MrChrister
Thank you MrChrister for the good feedback!
ccook
What you will be using is Jet, not Access. And it could well be ideal.
Remou
+1  A: 

One simple reason to use SQL Server instead of a Microsoft Access Database: The MS Access DB can result in a bottleneck if the DB will be used heavily by a lot of users.

Giu
Bottleneck by connection limits?
ccook
And if it won't be used heavily by a lot of users?
le dorfier
@ccook: yes, I would say so.@le dorfier: Then you should evaluate if you're going to insert a lot of data into the DB, because Access allows only a few GB of data to be inserted.
Giu
+6  A: 

Here's a document from Microsoft that might help:

Access vs. Sql Server

Another Article.

My own personal thoughts, Access has no place in an environment that could scale beyond more than two or three concurrent connections. Would you use Excel as the back end?

Moose
Thanks! Two good links. I have also experienced the same connection issues, usually around 6-7 it starts crapping out.
ccook
+3  A: 

Don't forget that for something as small as most Access Databases, you can use SQL Server Express Edition, which is free, so it won't cost you anything.

Dave Markle
Cause I don't know, don't you have to install and configure a server? Access is just a file, can SQLExpress files but used without a server installed like access?
MrChrister
AFAIK, SQL Server Compact Edition is embedded within the application - no server required. See document "Compare SQL Server 3.5 Compact and SQL Server Express Edition Features" on the following page: http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx
beach
You can, in fact use SQL Express with a file. Just check out connectionstrings.com -- that will show you what sql connection string you need for file-based access.
Dave Markle
And how do you implement, support, and debug the database?
le dorfier
+1  A: 

Licensing for one. I doubt he wants to have hundreds of Office licenses (one for each end user that connects to the site). SQL has licenses that allows multiple connects at the same time without specific connection licenses.

Not to mention scalability and reliability issues. SQL Server ios designed to be used and administrated in a 24/7 environment. Access has not.

SQL can scale to squillions of simultaneous connections, Access cannot.

SQL can backup while operating, Access cannot.

SQL is designed as a highly robust data repository, Access is not designed with the same requirements in mind.

Brody
I am pretty sure you don't need to license Access for each user. You don't even need Access to run on the server, it is just a file format.
MrChrister
You would only need a license for each "server" connecting the Access database. Visitors to a site don't connect directly to the database.
sirlancelot
You do not need *any* licenses to use an access database anywhere. You need a license to use the MS Access *application* but that's entirely different.
DJ
+1  A: 

Access doesn't deal with multiple users very well (at all?). This means if you have more than one person trying to access or especially update your site it's very likely to die or at best be very slow.

There's much better tooling around SQL Server (linq to sql or entity framework or any number of ORMs).

SQL express is a much better choice than access for a web site backend and it's free.

Whisk
+2  A: 

I found this nice quote as well:

It is not recommended to use an Access database in a production web application. For production purposes, consider connecting to a Microsoft™ SQL Server database using the SqlDataSource or ObjectDataSource controls.

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/accessdatasource.aspx

ccook
Well, they would say that, wouldn't they? :-)
Mike Woodhouse
You don't suppose Microsoft ever underestimates the capability of an Access database, or the support requirements of SQL Server, do you?
le dorfier
+4  A: 

Your manager has stated the reason he wants to use Access. Are you responsible for designing an alternative? Do you have any reason to think you will benefit from proving your manager wrong? What is your personal upside in this conversation? Are you certain that Access won't be "good enough"? Is the redesigned site going to have heaver or different loads (i.e. more users, or less efficient design)? I'm not sure you want to be arguing with your manager that you can't implement something that does as well as the old design.

It's going to be a lot easier to let the project fail (if you expect that will be the outcome) and rescue it with SQL Server, than to get your manager to concede that you understand the situation better than he does.

le dorfier
Fortunately I am not employed directly in this situation. I am a 'student helping out' (who happens to be a web-dev). I don't really benefit by proving them wrong or right.. We certainly can work around Access by say loading it all into memory and query in memory. Then cache the pages.
ccook
+1 for a good perspective
ccook
We've had enterprise-grade applications designed and implemented that are being used by one user in the organization, a few hours a month. Size the job right.
Christopher Mahan
+1 sounds like experience speaking here
MrChrister
+1 I know from experience that Access, or more properly Jet, works very well on the web for small, low-cost sites.
Remou
+1  A: 

Consider the option that maybe he is right. If it is working fine with Access just leave it like this. If there are scalability problems in the future ( the site is used from more than 1 user simultaneously), than it his problem, not yours.

Also consider sqlite, may be better than access

devdimi
+1 on sqlite. A whole new website is being developed (replacing php).
ccook
+1 on sqlite also.
Christopher Mahan
-1 on "more than one user simultaneously". Access can handle a lot more that one user, and should not have to handle many users simultaneously if the site is built to keep connection time down.
Remou
+2  A: 

Don't argue, benchmark it. Real data should trump rhetoric (in a rational world, at least! ;-)

Set up text boxen with the two alternatives and run 'em hard. (If you're exposing web services, you can use a tool such as SoapUI for automated stress testing. There are lots of other tools in this space.) Collect stats and analyze them to determine the tradeoffs.

joel.neely
+1  A: 

Just grab a testsuite (or just throw one together):

  1. compare the time taken for create a db with 1000,000 enteries.
  2. search an entry in the db.
  3. Vaccum the db
  4. Delete the db
  5. Do couple of operations that you think will be done more on the db couple of times.

and do it infront of him to compare (write a script).My guess is that either your IT manager is joking, or the site that you are working on are non critical and he doesn't want to allocate resources(including you).

Sridhar Iyer
A: 

MS Access is for 1 desk 1 user ! I was spending a year in a previous project to detach an application (growing to enterprise size in terms of users) from Access because its strange locking behavior and awful performance. SQL Server Express Edition is a good starting point, as echoed from previous posts.

devdude
We have discussed in other answers how the reality is different regarding how much access can handle
MrChrister