Microsoft Access 2007 & Power users - ms-access

We're using MS Access 2007 as our DB and should support users with limited access (power users):
The DB should be common to all users (hence cannot be located on user's private folder)
We are not allowed to grant permissions for all users for R/W for a certain directiry
Yet we need all users be able to use this DB.
Can anyone can think on a solution to this issue?
(I can only think on writing a service to this job, but I'm sure there must be something better)

Have a look at this to help you make your decision. Personally I won't recommend using Access if your user is more than say 4 simultaneous users as a shared database. I've used solution however where we use Access as a front end to a SQL Server backend where we cache SQL data locally for faster access and push necessary data changes back to SQL Server. And have that Access file reside on the client computer.
Putting Access anywhere will require a R/W permission on that directory since Access will create lock file in that directory (or it used to be anyhow).
If you insist on using Access, I'd go w/ Access front end connecting to SQL Server backend. The network share option is doable if you don't have a lot of users (4 - 8 the most).

You want to split the MDB into a Front End MDB containing the queries, forms, reports, macros and modules with just the tables and relationships in the Back End MDB. The FE is copied to each network users computer. The FE MDB is linked to the tables in the back end MDB which resides on a server. You make updates to the FE MDB and distribute them to the users, likely as an MDE.
See the "Splitting your app into a front end and back end Tips" page for more info. See the Auto FE Updater downloads page to make this relatively painless.. The utility also supports Terminal Server/Citrix quite nicely.
Now I don't quite understand why you have the restriction mentioned in your second bullet There has to be a common folder on a server somewhere where all usess have R/W privileges. Please explain this in more detail.

SQL Server Express can be used as the backend database, and it doesn't require that you give write permissions to a folder for everyone.
The SQL Server Migration Assistant 2008 for Access V4.0 can be used to migrate the Access database tables to SQL Server Express.
Using SQL Server Express as the database server will greatly improve the stability and reliability of Access in a multiuser environment. I have worked with Access for several years, in installations with 20+ concurrent users. If you are doing something similar, I strongly recommend that you use Sql Server or Sql Server Express as your backend database.

Related

Sync Microsoft Access Database on a local network with a MySQL database on a web server

I'm a front-end web developer trying to devise a solution to sync a Microsoft Access Database on a local network with a MySQL database on a web server. I ran across some software that might perform this however it looks complicated to maintain and seems like it could be an additional point of failure.
There is also a way MS Access can use an ODBC to an external MySQL database. https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-examples-tools-with-access-linked-tables....
If the ODBC connection to the external MySQL database works, is there a way to sync an external DB table with a local DB table so when a change occurs with one it's pushed to the other?
Or is there another recommendation to handle this process?
Thank you.

How do I migrate a SQLAnywhere 9 db running in a remote server into a mysql server on my machine?

I am working at a company that has some CRM software running in a remote Windows XP server that uses a SQLAnywhere 9 db to store its data; I have access to this remote server with an administrator account.
I would like to extract the db into a .sql file so that I can run the db locally on my machine without affecting the running db in the server (since it is key for the company's day to day operation).
The reason I need this is that we are going to test some BI Software and we need data from this database to test it, but we don't know the structure of the database since the developers of the CRM software didn't give us any documentation on it. So we need to have the database locally so that, without affecting the running CRM, we can:
understand the structure by looking at the DDL
make queries to it to get sample data
I researched a bit, and the most common solution to my problem was to use dbunload on the remote server to unload the db into a reload.sql file that contained what I needed. But most tutorials on the subject mention that I have to stop the db first (which would be catastrophic). If this is the only option, then I guess I am willing to do it on the weekend when the CRM is not used, but I wanted to know if there was another solution first.
If there is no other solution, can you point me to where I can find the proper and safer way to do this?
I have researched a lot, but prior to this day I have never even heard of SQLAnywhere, so I really need all the help I can get. My main concern is doing something that impacts negatively the CRM software.
Thank you.
You can run dbunload across the network, you just have to tell it to do an "external" unload. The default is to do an internal unload which would only work from the machine where the database server is running.
I don't have SQL Anywhere 9 documentation right now to look up the exact switch, but dbunload -? should show you all the possible switches.
Edit:
-an will create a new database and load the data and schema from another data
-xi switch will do external unload and internal reload.
-c parameters to connect to your remote database

Local and Remote data store sync

I have a situation where I would like a desktop application to be useable whether an internet connection is present or not.
I have a choice of MySQL on a web server and I could work with a local MySQL database or maybe MS Access database on the local drive and then just update data when connection is restored. My issues are as follows.
Sync local changes to remote server. Multi site / multi user scenario so how to keep db in sync when connection restored without loosing changes from other users in server data.
Sync remote changes to local. Multi site / multi user scenario so how to keep db in sync when connection restored without loosing changes made locally while updating with server data.
Currently I am using XML files and LingtoXML querying but it is unsatisfactory to continue with these files so a better solution is required.
Any help would be appreciated to identify what technology would work best and how to keep them in sync.
Thanks in Advance.
"Jet Replication Objects (JRO)", the replication features of the Access Database Engine, have been deprecated (ref: here). I believe that the related management features have also been completely removed from Access 2013. Therefore, native Access replication should no longer be considered a viable option.
Microsoft's recommendation would be to use SQL Server and its replication features. However, SQL Server Express has limitations on how much it can do (e.g., it can be a "Subscriber" but not a "Publisher" or "Distributor", ref: here) so presumably there would have to be a non-free copy of SQL Server involved somehow.
I haven't yet had the occasion to use MySQL replication myself, but it is probably worth considering. Chances are good that you could still use Access as a front-end (via ODBC linked tables).

Share Excel file that queries a database

I have a read-only file that queries a SQL Server database and will provide the information personalized for the specific user. (Excel identifies the user and then runs the query based on the users id). What I was wondering is if there is a way to share the file without having to setup an ODBC connection for each user?
For right now I have it working for four users, but to get to that point, I had to setup ODBC on each machine. Since the file will eventually have about 60 users I was hoping there was a way for it to query SQL Server without having to setup that many ODBC connections?
See here: DSN-less connections for a guide

Using MS Access & ODBC to connect to a remote PostgreSQL

I currently have an MS Access application that connects to a PostgreSQL database via ODBC. This successfully runs on a LAN with 20 users (each running their own version of Access). Now I am thinking through some disaster recovery scenarios, and it seems that a quick and easy method of protecting the data is to use log shipping to create a warm-standby.
This lead me to think about putting this warm-standby at a remote location, but then I have the question:
Is Access connecting to a remote database via ODBC usable?
I.e. the remote database is maybe in the same country with ok ping times and I have a 1mbit SDSL line.
onnodb,
The PostgreSQL ODBC driver is actively developed and an Access front-end combined with PostgreSQL server, in my opinion makes a great option on a LAN for rapid development. I have been involved in a reasonably big system (100+ PostgreSQL tables, 200+ Access forms, 1000+ Access queries & reports) and it has run excellently for a few years, with ~20 users. Any queries running slow because Access is doing something stupid can generally just be solved by using views, and any really data-intensive code can easily be moved into PostgreSQL functions and then called from Access.
The only main ODBC-related issue we have is that there is no way to kill a slow running query from Access, so we do often get users just killing Access and then massive queries are just left executing on the server.
Yes.
I don't have any experience using Access to hit PostgreSQL from a remote location but I have successfully used Access as a front-end to SQL Server & DB2 from a remote location with success.
Ironically, what you don't want to do is use Access to front-end an Access database (mdb) from a remote location over a high-latency link. Since hitting the MDB uses file-based operations it's pretty easy to end up with a corrupt database if you have anything more than a trivial db.
It depends a lot on the database you're using as a back-end. I've had rather terrible experiences with MySQL as a back-end. Make sure the ODBC link you're using is actively developed, stable and complete --- this was definitely not the case for MySQL. You may also want to check for any compatibility issues between Access and Postgre. And, of course, it won't hurt to test extensively.
Oh, and I think it'd be absolutely great if you could post back here later with your experiences!
PostgreSQL works great as a backend for MS Access, there are a couple of support functions you should use to make things easier. See here for more info on this:
http://www.amsoftwaredesign.com/smf/index.php?board=8.0