views:

107

answers:

4

Please, give me the most serious arguments against this. Application directly opens a connection to ms sql server, directly executes queries. So what I'd like to ask:

1) Why it is wrong when the number of users can be up to 1000 executing huge queries?

2) What serious problems can that cause?

3) What should I do?:)

Arguments, the most serious arguments against this kind of implementation!

+1  A: 

What about:

  • The version of access 97 is totally outdated and wont get any updates, has a crappy look, crappy functionality and in general - IF it requires rework - should be updated.
  • Problems? You run on a 10 year old out of support platform. What problem can that cause? Well - what about limited support?
  • Upgrade at least to 2007, better 2010 (coming in a couple of weeks) when you have a momnent time. I personally dispise access based applications (crappy architecture to start with etc.), but if there is one, the update to access 2010 is possible the most painless way to go.
TomTom
I need arguments, the most serious that can be reason to change application to .net or as you said, upgrade to 2007 or 2010.So if you advice to upgrade it? How can we do that? Will it take a long time, if it's a huge program with many-many forms and queries and so on? Will it be risky or it'll work the same way, as it was working?
hgulyan
Well, going .NET is a full rewrite - and access has some features hard to program to start with. An upgrade to 2010 (I would not go with 2007 at that point) is most likely a lot faster (less costly) than a rewrite. HOlw long it takes depends on how it is written. NOT having made all the interim upgrades was a stupid mistake - from one version to the next is mostly a lot less painfull. For the rest - well - find it out. Seriously, I dont know the app. And I dont do access for more than playing around with data.
TomTom
I would defiantly go with access 2010. Access 2010 has table triggers and stored procedures. It also has the ability to publish web forms to the web (they are .net zammel forms and result in browser neutral applications). Here is video of an access application in 2010 and at the half way point I switch to running the application in a browser.http://www.youtube.com/watch?v=AU4mH0jPntI
Albert D. Kallal
@TomTom, I'm not sure, that not upgrading is a mistake. Access 97 is just older, but it doesn't mean, that it's better. Can you point me to a real argument? I agree that upgrading to 2010 is a good solution, but the point is not in version or .net, the point is that I need to compare client-server and this kind of implementations.
hgulyan
@Albert D. Kallal, but does that matter, if we don't use access tables? We store everything in sql server. Thank you for the link.
hgulyan
Not upgrading is a mistake. Access 97 is an outdated out of supportitem - IF any critical error appears, you wont even get an information. THat said, if you are in for a real programming job (which will take a lot more time than an upgrade or a even a rewrite in access) - go for it. Use .NET, put in a front end in WPF, use a real application server. SPend a LOT more money on that ;)
TomTom
I have rewritten a small app on access 97 to .net 3.5 wcf service and it's fine. There aren't some features on winform controls, but it's surely much more better implementation. Ok, access 97 is outdated, but we don't need any support, that's not an argument. Can you point to some real problems, so that a person who's fine with access 97 to change his mind. I'm not talking about myself.
hgulyan
Well, what about it is not supported? YOu really want to write an application that SP1 for Win7 may break? I would do it - after having management sign a document explicitely making sure they know they INSIST on me using outdated old stuff that may break on whim and agreeing to not hold me responsible for what otherwise would be a case of gross neglect.
TomTom
Look, I'm not saying that you're wrong, but I'm talking about implemantation, programming and db related problems. The app users use win xp and nothing else. This won't change. The real problem can be after high load of users with huge queries and that kind of stuff.
hgulyan
Xp wont change? Sure about that? A year down the line they dont eve nhave plans to retire XP? This is exactly the issue about "gross neglect". You have to plan forward with stuff like that. Let the boss SIGN he will not retire XP. That said, load issue - no idea. Access in general is NOT a high load environment. It is a nice "put something ogether fast" thing.
TomTom
Yes, it won't. Responsibility of changing OS or DB or even screen resolution and at the same time the responsible for apps is the same person. Is that enough for you?I agree with you, but what you say is not an argument for them.
hgulyan
Not enough for me ;) Seriously ;) They WANT you top use Access 97 now, make sure they sign you a waiver. Then look for another job.
TomTom
or find arguments to change access 97 to .net 4, and that's what I'm asking for:)
hgulyan
+1  A: 

One of the things to consider is how the queries are done. 1000 queries against a SQL Server DB might be manageable, but 1000 Access queries in which the table is locked, or which are actually joins or views, could use dramatically more memory. It really depends on how the application is written. Some Access apps open a recordset and page through the records one at a time, or fetch a few dozen and work on those, but sometimes Access grabs the whole recordset, for example to allow users to page through data. And I have seen Access lock a set of tables to allow editing of them. That would be bad in your scenario.

Of course, I wholeheartedly agree with the "10 years out of support" issue. That is a guaranteed problem. Mine is only a possibility. And you should probably update SQL Server to a current version also, for the same reason.

MJB
I would like to hear about the situations where "Access grabs the whole recordset, for example to allow users to page through data." I have never seen this, and it is completely in contradiction to everything I've ever read or experienced in regard to Jet and its Rushmore technology and how it interacts with ODBC and servers. I also don't see it as an Access/Jet/ACE problem, so much as an application design error.
David-W-Fenton
@MJBWe're testing on sql server 2008, so we'll update sql server version soon after some testing. We're optimizing queries and other stuff, but still there are really huge queries with joins, views, counts, huge tables and so on. Can you link or advice some optimization tips?
hgulyan
@David -- I was not implicating Access, I was implicating poor programmers. I don't recall the exact situation, but I could have sworn I saw the application locking out everyone. I could have misremembered though. But my point was more that a badly written application could cause a problem in this scenario. Of course, badly written apps cause problems everywhere, so that was kind of a waste of time for me to write.
MJB
The usual practice with Access/ODBC/SQL Server is to find out what parts of the app are a performance drain and move those server-side. If you've got complicated joins that are dragging the whole tables down to the workstation to be done locally, then create a VIEW on the server that does the same join, and you can link it as a table and then use that in your forms. That's just one example of what to do -- if it's slow, move it server-side. If it works, leave it alone!
David-W-Fenton
+1  A: 

Access 2003 or 2007 would be just fine for the scenario as long as you had an Access developer who was up to speed on how to develop for client/server with large user populations.

Access 97 is still an awfully nice version of Access. I think it's the best version ever produced.

But it is out of support and predates the alteration of default permissions in Windows implemented with the release of Windows 2000. This means that it has some problems in installing with its default permissions (it expects write access to its application folders and registry keys). An installation script can easily alter these appropriately, but you're still left with problems in certain contexts, like trying to run it in Windows Terminal Server/Citrix, where it very often just completely breaks.

I would like to hear an explanation of exactly why someone would choose A97 for new development. Of course, I may be misinterpreting. You may be asking about an existing app, in which case I'd go with "if it ain't broke, don't fix it," and then ask exactly what it is that is perceived as "broken." Those things can be fixed, though it's unlikely that simply upgrading from A97 to something more recent is going to do the job.

David-W-Fenton
Access 97 app works almost fine. It has some problems, but application is working. It's slow, but it's working and maybe it'll be work fine with high load, we don't know yet. It's not broken, but we should find a way if the app won't work with high load. I think, that it's not right implementation, having db access on every computer and besides that I'm more up to client-server implementation, that's why I'm asking why this kind of app is wrong implementation and if not, than why not.
hgulyan
Er, what part of it is not client/server? The processing is on the server, except where Jet is not smart enough to hand it off to the server. In those cases, you rewrite the app to hand off the processing to the server. Not sure what you're afraid of here.
David-W-Fenton
If it's slow, it's likely not well-designed for the operating environment. Is the connection from the client PCs to the SQL Server across a wired LAN? If so, then it really oughtn't be slow except if the app is just badly written, or not optimized for the SQL Server back end.
David-W-Fenton
By "server" I mean application server, not db.Yes, mostly computers connect to server across a wired LAN. I don't know yet, if it'll work fine or not, but I got your point. We just need to optimize code, queries .. and it'll be ok.
hgulyan
A: 

I’m currently nearly finished with a brand new application written in access 97 that stores its data in SQL server 2008. As has been said many times before the access/SQL server combination really works great.

Inline with my other applications it is completely unbound using ADO to get the data from the server. I wont drag up that debate again here but it is something you really want to look into as it can offer some great benefits.

Most of the SQL server guide you will find will ask you to check that you have the correct indexes and try to identify the slowest running parts of the system or the ones that get called a lot and then look at making them faster. That might cause you to make a covering index or to denormalise the data in someway.

Generally what is good practice for JET also works well for SQL server, make a good table schema with a good clustered index choice and good supporting indexes and you are 95% of the way there

Kevin Ross
Thanks for very usefull answer. You said: "I wont drag up that debate again". Can you link to that debate?
hgulyan
There are a number of topics on the internet about this, some for, some against (Here is one http://baldyweb.com/BoundUnbound.htm). Personally I almost always use unbound forms for the control they offer and the increase in performance. Yes they take slightly more time to make but once you are in the swing of things I would say it is just as quick. When I’m coding against a SQL server backend I generally will use stored procedures to do any data editing and recordsets to pull data out of the DB. I will now don my flame suit and wait for the backlash
Kevin Ross
Using Access to create an unbound app is really, er, um, well, I don't know how to say it, but it's DUMB. You throw away all the advantages of Access and lose most of the useful form events. If you are contemplating going unbound in Access, then you'd just be better off abandoning Access entirely and using a development platform built around unbound data manipulation. And A97 with ADO is a really ugly combination.
David-W-Fenton
@Kevin Ross, aha:) Did you try load testing on your ms access 97 apps?@David-W-Fenton, I'm not sure, if it's so ugly as you're describing. 1000 users bounded to sql server is not a good solution.
hgulyan
@David I respect you comments, as I said it is a touchy subject with many people for and against. I would say that we are at opposite ends of the scale in terms of opinion on bound v unbound. Of course most people will end up in a happy middle ground as its quite lonely out on the edge here!
Kevin Ross
@hgulyan Just to confirm this access/SQL application is completely unbound and so far 400 or so content users. That’s not all at the same time mind you, having said that I did a stress test using a few computers near me simulating answering question after question, it got to 15,000 answers/second before I had maxed out the network on the computers and the server was still quite happy
Kevin Ross