Why can't I access a database or text file on another server?
If the file is outside your LAN
Access isn't really designed for this type of application (see Article #2195 for more info), and if you need your database server to reside on a separate machine from your web server, it might be time to look for a more scalable database (e.g. SQL Server or Oracle). However, there is a way to connect to an Access database over the web, assuming you know the absolute file structure of the remote server (and know this won't change). Keep in mind that Access is not the most prudent performer on the same machine as the web site, and is likely to be more problematic over the web (which has many more variables). Here is a sample connection string:
I have received feedback that this "doesn't work"--while I have no idea what "doesn't work" means, I can say that along with the performance issues of using this kind of solution, there is also a painful configuration process that must be followed. NTFS permissions, firewalls, existence of MSADC, and several other issues might prevent this from working. The most common error I have seen is:
If you are getting this error, please refer to KB #251122 and KB #184606. Other permissions problems might be solved by referring to KB #253580.
For text files, you can read the contents of remote text files by using XML or one of the many ASP components designed for performing an HTTP "tear" or screen scrape--see Article #2173 for more info and a detailed example.
If the file is within your LAN
If you are using Windows Authentication, see KB #197964.
If the remote file is on a Novell file server, see KB #178045.
If the file is on a UNC share (\\servername\sharename\), see KB #308150 for walk-throughs of configuring virtual directories from remote shares.
If you are using anonymous access, you can accomplish this by synchronizing the anonymous user accounts on the two machines.
Synchronizing the IUSR_machine accounts
Let's say you have MachineA and MachineB. MachineB has a text file or Access database, in a share, that you want to have control over from your ASP application on MachineA. With a stock server setup, you should get one of many 80004005 errors with Microsoft Access, most commonly:
Or one of the following errors with FileSystemObject:
To give MachineA access to MachineB's shares, you need to fuss with the Anonymous User employed by IIS (IUSR_MachineA, in this case).
First, on MachineA, you need to go to Internet Services Manager, right-click Default Web Site (or the application in question).
Under the Directory Security tab, click 'Edit...' under 'Anonymous Access and Authentication Control.'
On Windows 2000, you will have to click 'Edit...' again under the Anonymous Access checkbox.
Uncheck "Allow IIS to control password" and enter a new password. When you click OK, you will be asked to confirm.
Click OK, Apply, OK, and close out of ISM. If prompted to save console settings, say Yes / OK.
On MachineB, go into Local Users and Groups--under Computer Management, add a user named IUSR_MachineA with the same password as above.
In Windows Explorer on MachineB, right-click the share in question, hit Properties, and on the SECURITY tab Add... the new local user, and give appropriate permissions. Hit Apply, Apply, OK.
Now run your ASP file from the original server, and all should be fine.
If you are still getting the error, check that you haven't exceeded the connection limit of the machine with the share. If it is Windows 2000 / XP Pro, only 10 anonymous users can be connected to it at a time. Consider using a server operating system for hosting such a share, or hosting the share on the web server itself (that way IIS will be able to grab the files locally, and interactive users will simply have to refer to the share on a different machine).
See KB #207671 and KB #189408 for more info.
Related ArticlesHow do I build a query with optional parameters?
How do I calculate the median in a table?
How do I create a store locator feature?
How do I deal with MEMO, TEXT, HYPERLINK, and CURRENCY columns?
How do I deal with multiple resultsets from a stored procedure?
How do I debug my SQL statements?
How do I determine if a column exists in a given table?
How do I enable or disable connection pooling?
How do I enumerate through the DSNs on a machine?
How do I find a stored procedure containing <text>?
How do I get a list of Access tables and their row counts?
How do I get the latest version of the JET OLEDB drivers?
How do I handle alphabetic paging?
How do I handle BIT / BOOLEAN columns?
How do I handle error checking in a stored procedure?
How do I ignore common words in a search?
How do I page through a recordset?
How do I present one-to-many relationships in my ASP page?
How do I prevent duplicates in a table?
How do I prevent my ASP pages from waiting for backend activity?
How do I prevent NULLs in my database from mucking up my HTML?
How do I protect my Access database (MDB file)?
How do I protect my stored procedure code?
How do I protect myself against the W32.Slammer worm?
How do I remove duplicates from a table?
How do I rename a column?
How do I retrieve a random record?
How do I return row numbers with my query?
How do I send a database query to a text file?
How do I simulate an array inside a stored procedure?
How do I solve 'Could not find installable ISAM' errors?
How do I solve 'Operation must use an updateable query' errors?
How do I temporarily disable a trigger?
How do I use a SELECT list alias in the WHERE or GROUP BY clause?
How do I use a variable in an ORDER BY clause?
Should I index my database table(s), and if so, how?
Should I store images in the database or the filesystem?
Should I use a #temp table or a @table variable?
Should I use a view, a stored procedure, or a user-defined function?
Should I use recordset iteration, or GetRows(), or GetString()?
What are all these dt_ stored procedures, and can I remove them?
What are the limitations of MS Access?
What are the limitations of MSDE?
What are the valid styles for converting datetime to string?
What datatype should I use for my character-based database columns?
What datatype should I use for numeric columns?
What does "ambiguous column name" mean?
What is this 'Multiple-step OLE DB' error?
What is wrong with 'SELECT *'?
What naming convention should I use in my database?
What should I choose for my primary key?
What should my connection string look like?
When should I use CreateObject to create my recordset objects?
Where can I get this 'Books Online' documentation?
Where do I get MSDE?
Which database platform should I use for my ASP application?
Which tool should I use: Enterprise Manager or Query Analyzer?
Why are there gaps in my IDENTITY / AUTOINCREMENT column?
Why can I not 'open a database created with a previous version...'?
Why can't I use the TOP keyword?
Why do I get 'Argument data type text is invalid for argument [...]'?
Why do I get 'Not enough space on temporary disk' errors?
Why does ASP give me ActiveX errors when connecting to a database?
Should I use COALESCE() or ISNULL()?
Where can I get basic info about using stored procedures?