I know if you plan to have an Access DB to support multiple users you should ideally deploy front end on each users PC. I have created a launcher in excel to do this.
However, some users do not have permission to copy files from the shared drive where the front end is stored, not even via file explorer. The database is just a search tool. No data is modified but Front End does have queries and VB.
In a scenario like this can I just have everyone use the same Front End on the Shared drive? What are the things that make it crash? Would a compiled version avoid problems? It’s Access 2010.
Actually, Access DBs are designed with multiple users accessing the file over a shared drive at a time. If you have a reasonably small number of users, I wouldn't worry about it.
Related
I need to develop a very simple database (probably no more than 4-5 tables, with up to 50 records per table) for my company, with the following requirements:
The database itself (most likely an Access file) must be stored on a server and accessed through http://www.something.com/my_db.mdb
Users from 6 different countries (with generally low Internet bandwidth) must be able to access this database and to view / edit it through a few masks, as well as produce automatic reports / extracts
The whole solution must be as robust and as low-tech as possible, to reduce maintenance issues (ideally, no development at all)
I cannot pay an Access license for each user, and using OpenOffie or LibreOffice is not an option (because I cannot go and install it on the computers of all the users)
My first (and naive?) idea was to:
1) Create the mdb file containing only the data and store it on a webserver
2) Create the edition masks and the automatic reports in another file that would define the online file as data source
3) Deploy the file containing the edition masks to the computers of all users
4) The users only have to open their local file to edit the distant DB through ther edition masks
Is my approach somehow realistic? Do you see another approach that would make more sense? Can I implement my solution with 1 single Access license?
Thanks a lot in advance for your inputs and insights!
If you provide just the mdb file as file source, accessible via HTTP, the users won't be able to connect to the database, because in a HTTP GET file download they just get the .mdb file downloaded to their local computer. When they edit something within the database (e.g. add a record), it will be done just locally on their local copy of the file.
If you want to use a access database, the simplest approach I have is that you implement a very small web application (e.g. ASP.NET) which connects to the .mdb file (and the .mdb file then can be in a private directory on the server). Your web application then is deployed to Internet Information Server (Microsoft IIS as a webserver).
You can provide data forms as web application, which you implement using ASP.NET, or develop separate clients which access web services you develop with .NET.
You could try cloud based solutions like; Google Firebase
For a requirement of this type; one should not use Access tables which are static because Access is a front end database but instead use a back end database such as SQL Server Express. SSE is free and one is better positioned to provide real web based features if needed in the long run.
Further I would say, in terms of cost/management - one should really consider using one of the online db services such as soho, knack, airtable, etc. One of these could well be faster and less expensive than creating a web app from scratch for such a small requirement.
Just wondering what the best practice is for the front-end portion of a split database. The company has a shared drive that everyone has access to and is where the back-end actually is. Just wondering if it is better practice to distribute a copy of the FE to everyone or if I should just point them in the direction of the FE on the shared drive. The latter seems easier to maintain although I know there is software to help manage FE distribution.
so is it that [distributing a separate copy of the front-end to each user] even still best practice?
Yes, even in 2016 it is not only the best practice, it is absolutely required for reliable operation with multiple concurrent users.
What would the benefit be over having everyone access a single FE file on a shared server?
When multiple concurrent users open the same copy of a front-end database file Access will get confused about the state of open objects (primarily Forms and their associated Recordsets). The data from the back-end can appear to be corrupted, although it may not actually be corrupted at the table level.
When multiple concurrent users each have their own local copy of the front-end file Access does not get confused and the application works correctly. That is the benefit.
The benefit is that all users always have a fresh and updated copy and - in case of a failure - they can just run the shortcut again to have a fresh copy.
This even works in a Citrix environment:
Deploy and update a Microsoft Access application in a Citrix environment
i have an access database on a server. it is split up into front end and back end.
people are accessing the database's front end using a shortcut from their desktop computers.
i know for a fact that multiple people are using it at the same time.
for some reason, when i created a shortcut on my computer to access the front end of this database, i can open the file no problem, but if i try to view any tables or forms i am getting:
could not use .....file; file already in use
what does this mean?
I'm unsure what your error message means specifically. I don't understand why Access would open the database file without complaint, but then spit an error when you attempt to view forms or tables. I've never encountered that situation.
However, in a general sense, I think it means you should give each user their own copy of the FE database file ... instead of allowing everyone to directly open the same FE file on a network share.
Use Tony Toews' free Auto FE Updater to manage the distribution of the FE files to your users. Then you can replace the existing desktop shortcuts with a shortcut to Tony's utility. It's a slick way to ensure all the user's have the latest version of your FE, and by giving them their own copy avoids the problems inherent in allowing everyone to directly open the very same FE database file.
Also, read this page from Tony for more detailed information: Splitting your Microsoft Access MDB into a front end and back end - Why?
Edit: Perhaps the error message is because a user has the BE database opened exclusively. They wouldn't need to open it in that mode, but when modifying a back end object, like a table design, Access will switch them to exclusive mode. However, if this were the explanation, it seems like everyone except the exclusive user would be getting the same error message as you. Are they?
One of the best practices as specified by Microsoft for Access Development is splitting Access application into 2 parts; Front End that hold all the object except tables and the Back End that holds the tables.
The msdn page links there to the article Splitting Microsoft Access Databases to Improve Performance and Simplify Maintainability that describes the process in details.
It is recommended that in multi user environment the Back End is stored on the server/shared folder while the Front End is distributed to each user.
That implies that each time there are any changes made to the front end they need to be deployed to every user machine.
My question is:
Assuming that the users themselves do not have rights to modify the Front End part of the application what would be the drawbacks/dangers of leaving this on the server as well next to the Back End copy?
I can see the performance issues here, but are there any dangers here like possible corruptions etc?
Thank you
EDIT
Just to clarify, the scenario specified in question assumes one Front End stored on the server and shared by users.
I understand that the recommendation is to have FE deployed to each user machine, but my question is more about what are the dangers if that is not done.
E.g. when you are given an existing solution that uses the approach of both FE and BE on the server. Assuming the the performance is acceptable and the customer is reluctant to change the approach would you still push the change? And why exactly? For example the danger of possible data corruption would definitely be the strong enough argument, but is that the case?
It is a part of follow up of my previous question From SQL Server to MS Access 2007
The only drawback to leaving the individual user specific copies of the FE on the server is network performance. It won't make a difference as far as data corruption.
But you shouldn't share a FE between multiple users. This is prone to corruptions on the FE and other weirdness. Each user should get their own copy of the FE. Also you can't replace it with a new copy while users are using it.
A client was running for years with the FE on individual user folders on the file server but running msaccess.exe in a Citrix cluster. The IT staff didn't want to have anything updating the local hard drives of the Citrix cluster server systems.
As far as deploying the FE see the Auto FE Updater at my website. Huge changes coming in the next week to make it much, much easier for both initial server install and easier user initial install.
To keep the front-end on the server would more or less defeat the purpose of splitting the database. Putting the front-end on the desktop reduces network traffic since the application is not retrieved for each use, and allows the front end database to contain tables with data that is private to each user for storing settings or temporary data.
If you wish to avoid data corruption, it is important that each user should have their own copy of the front-end. Allen Browne offers more details on avoiding corruption in this article
There are a number of utilities available to update the front-end version on the desktop as required, or you can even write such a utility yourself.
I agree with the others. Keeping the fe on the server is not recommended. Just put a batch file on your server that does the push. When you have an update send a shortcut to the batch file via email. That is one of many solutions. Once you set it up it is not a problem.
Seth
As an Access 2007 Programmer using a Front End (FE) that is linked to a Back End (BE) database (a.k.a. Split Database) I have done both of the above. Sending an updated FE to users has other overhead, esp if third party controls or applications are used.
As for Citrix, back in Access 97 days, a Citrix manager was able to allow me to put one copy of the FE in a server file location. It would create a new instance for each user that logged in. We were able to use over 50 users with out any impacts. I must qualify this by saying the Access VBA code used efficient updates and transactions with roll-backs rather than just simple Select statements.
My problem today is Access 2007 running on a Citrix server (Windows 2003).
When I am the only person logged into Citrix, the application ( I picked a large complex report that creates a custom Excel spreadsheet via automation for the test) it runs within 1% as fast as running the FE from my XP workstation, and linking to the BE on the Citrix server hard drive.
But, when two or three people log into the Citrix Server, the same report takes three times as long. However, while two or three people are logged into Citrix, I can run my FE from my XP workstation and it runs exactly like the single-user on citrix.
A FE posted on a shared networked drive, shared by two or three users is NOT advised for this same reason. Access FE are not designed to be shared (* I will spare the details*). That is why people put a FE on each workstation and share one database (BE).
What I find lacking in Citrix is some good step-by-step "how-to" run Access FE on Citrix. Ideally, a single file could be posted. When a user loggs into Citrix, Citrix should make a copy of the FE and assign the resources (for Access) to that user's login.
I think this is exactly what MS Office does automatically or at least has instructions on how to do it.
If such a document exist, please post it. A programmer like myself would love to hand it to the Citrix Administrator. It would solve a lot of problems.
I have created an Access file with forms and report and put it in a shared drive with full access rights. But when one user open the Access file, another user can not open the file. He clicks on the file, but no response comes... while I, at the server, am able to open it at anytime.
I am stuck. This Project is for all the users, all of them need to access the mdb file at the same time. How could it be done.
I have a lot of hope. Hope you guys help me out.
Thanks in advance.
Use the database splitter wizard to split your database into separate front end and back end components. Your forms and reports should remain in the front end. And the back end should contain only tables, indexes, and relationships. In the front end, your "tables" will actually be links to the back end tables.
Then use Tony Toews' Auto FE Updater (http://www.autofeupdater.com/) so that each user will work from their own copy of the front end database.
The approach that you're using now ... allowing multiple users to directly open the same mdb stored on a network share ... is asking for trouble. In addition to the problem you're seeing now, that approach dramatically increases the risk of database corruption. Don't do that!
Maybe one of your users is now opening the file in Exclusive mode?