//  home   //  advanced search   //  news   //  categories   //  sql build chart   //  downloads   //  statistics
 ASP FAQ 
Home
ASP FAQ Tutorials

   8000XXXX Errors
   ASP.NET 2.0
   Classic ASP 1.0
   Databases
      Access DB & ADO
      General SQL Server & Access Articles
      MySQL
      Other Articles
      Schema Tutorials
      Sql Server 2000
      Sql Server 2005
   General Concepts
   Search Engine Optimization (SEO)

Contact Us
Site Map

Search

Web
aspfaq.com
tutorials.aspfaq.com
databases.aspfaq.com

ASP FAQ Tutorials :: Databases :: Other Articles :: Why can't I access a database or text file on another server?


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: 
 
<% 
    set conn = CreateObject("ADODB.Connection") 
    conn.open "Provider=MS Remote;" &_  
        "Remote Server=http://<ip address or server name>;" &_ 
        "Remote Provider=Microsoft.Jet.OLEDB.4.0;" &_ 
        "Data Source=c:\inetpub\wwwroot\file1.mdb;" 
%>
 
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: 
 
Error Type: 
Microsoft ADO/RDS (0x800A20FF) 
Internet Server Error.
 
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: 
 
    Microsoft OLE DB Provider for ODBC Drivers error '80004005' 
    [Microsoft][ODBC Microsoft Access 97 Driver] 
    The Microsoft Jet database engine cannot open the file '(unknown)'. 
    It is already opened exclusively by another user, or you need 
    permission to view its data. 
 
or 
 
    Microsoft JET Database Engine error '80040e69' 
    Could not start session. 
 
or 
 
    Microsoft OLE DB Provider for ODBC Drivers error '80004005' 
    [Microsoft][ODBC Microsoft Access 97 Driver] 
    Disk or network error.  
 
Or one of the following errors with FileSystemObject: 
 
    Microsoft VBScript runtime (0x800A0046) 
    Permission denied 
or 
    Microsoft VBScript runtime (0x800A004C) 
    Path not found 
or 
    Server object error 'ASP 0177 : 800a0046' 
    Server.CreateObject Failed  
 
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 Articles

How 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?

 

 


Created: 4/25/2001 | Last Updated: 6/22/2006 | broken links | helpful | not helpful | statistics
© Copyright 2006, UBR, Inc. All Rights Reserved. (83)

 

Copyright 1999-2006, All rights reserved.
Finding content
Finding content.  An error has occured...