By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,773 Members | 1,779 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,773 IT Pros & Developers. It's quick & easy.

how to connect to an Access DB from a webfarm?

P: 9
I've a WebFarm with 2 web servers which are NLBs (network load balanced).
Web1 and Web2; they are not part of a domain.
I have a third server, Server3, which is part of a domain and on the same physical network, and it has an MSAccess database which is used on the external webfarm as well as on the internal intranet. I can connect via the intranet because the DB file is on the same box from which the intranet is being served (Server3)

How can I 'connect' to the MSAccess database file on Server3 from either Web1 or Web2?

When I use the code below, I get this error:
The Microsoft Jet database engine cannot open the file '\\Server3\C$\MSAccessDBs\Database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.

Any clues?

Here's more info:

I'm using ASP.NET v1.1, using a standard OLEDb connection (referencing the database by path [see code below]).

From the ASP.NET v1.1 "web.config" file (I'll refer to this as ConnectStringA)
Expand|Select|Wrap|Line Numbers
  1.  <appSettings>
  2.     <add key="strConnectAccess" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Server3\C$\MSAccess\DatabaseFile.mdb"/>
  3. </appSettings>
actual "connect" code:
... I'm pausing here.
I went to go look at the connection code and there is a direct inline connection string to another database which appears to not be failing:
--> I'll refer to this as ConnectStringB,

The difference between ConnectStringA and ConnectStringB is that ConnectStringA assumes a shared folder, whereas ConnectStringB goes direct, as it includes the "\C$" element.

Well, I added the "\C$" to ConnectStringA, (now "\Server3\C$\MSAccess\DatabaseFile.mdb") and it still fails.

Yes, I would agree there is some sort of permissions error. The database is set for Shared, not Exclusive.

Here is my "connect" code (modified to protect a client's database)
Expand|Select|Wrap|Line Numbers
  1.     Sub btnlogin_click(ByVal sender As Object, ByVal e As EventArgs)
  2.         Dim conpw As OleDb.OleDbConnection
  3.         Dim cmdpw As OleDb.OleDbCommand
  4.         Dim strsql As String
  6.         Dim dappw As OleDb.OleDbDataAdapter
  7.         Dim dstpw As DataSet
  8.         Dim rowpw As DataRow
  9.         Dim bldpw As OleDb.OleDbCommandBuilder
  10.         Dim inti As Integer
  11.         Dim rdrpw As OleDb.OleDbDataReader
  13.         Dim xx As String
  14.         Dim yy As String
  15.         Dim strmsg As String
  16.         Dim strcounties As String
  17.         Dim lngposition As Long
  18.         Dim strIsCSR As String
  20.         If txtIsCSR.Checked = "True" Then
  21.             Session.Contents("IsUser2") = "True"
  22.             Session.Contents("userName2") = txtUserName.Value
  23.             Session.Contents("userPass2") = txtPassword.Value
  24.             Response.Redirect("user2Logon.aspx")
  25.         End If
  27.         lngposition = InStr(txtPassword.Value, "'")
  28.         If lngposition > 0 Then
  29.             Response.Redirect("loginError.aspx")
  30.         End If
  33.         conpw = New OleDb.OleDbConnection(ConfigurationSettings.AppSettings("strConnectAccess"))
  34.         conpw.Open()
  37.         strsql = "SELECT * " & _
  38.         "FROM [ User] " & _
  39.         " WHERE ( ([ User]].UserName = '" & txtUserName.Value & "') AND ([ User].password = '" & txtPassword.Value & "') )  "
  41.         cmdpw = New OleDb.OleDbCommand(strsql, conpw)
  42.         rdrpw = cmdpw.executereader
  44.         xx = 0
  45.         While
  46.             xx = xx + 1
  47.             strmsg = rdrpw.item("userID") + rdrpw.item("userName")
  48.             strcounties = strcounties + strmsg
  49.         End While
  51.         conpw.close()
  53.         If xx > 0 Then
  54.             Session.Contents("counties") = txtMemberid.Value
  55.             Response.Redirect("Here.aspx")
  56.         Else
  57.             If Len(Trim(Session.Contents("logintrys"))) = 0 Then
  58.                 Session.Contents("logintrys") = 0
  59.             End If
  60.             ctry = (Session.Contents("logintrys"))
  61.             ltrys = CInt(ctry) + 1
  62.             If ltrys > 6 Then
  63.                 Response.Redirect("lockout.aspx")
  64.             End If
  65.             ctry = CStr(ltrys)
  66.             Session.Contents("logintrys") = ctry
  67.             Response.Redirect("loginError.aspx")
  68.         End If
  70.     End Sub
So, in all, this error [below] is occuring, it does point to "permissions" of some kind. Thing is, how to I "connect" from a webfarm not on a domain to a server (Server3) which is on a domain? Is there a way to "mount" the shared folder at system startup and mapped to a drive letter (e.g. no user logon)?

The Microsoft Jet database engine cannot open the file '\\Server3\C$\MSAccessDBs\Database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Feb 21 '07 #1
Share this Question
Share on Google+
1 Reply

Expert 2.5K+
P: 4,871
Here is an article that may help:
How To: Connect to SQL Server Using SQL Authentication in ASP.NET 2.0

Please remember the connection to another server is going to be very different to that of a db on the same machine and may need to involve a domain or IP address...
Feb 23 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.