468,510 Members | 1,631 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,510 developers. It's quick & easy.

how to connect to an Access DB from a webfarm?

9
Scenario:
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>
  4.  
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:
\\Server3\C$\MSAccess\LogError.mdb
--> 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
  5.  
  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
  12.  
  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
  19.  
  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
  26.  
  27.         lngposition = InStr(txtPassword.Value, "'")
  28.         If lngposition > 0 Then
  29.             Response.Redirect("loginError.aspx")
  30.         End If
  31.  
  32.  
  33.         conpw = New OleDb.OleDbConnection(ConfigurationSettings.AppSettings("strConnectAccess"))
  34.         conpw.Open()
  35.  
  36.  
  37.         strsql = "SELECT * " & _
  38.         "FROM [ User] " & _
  39.         " WHERE ( ([ User]].UserName = '" & txtUserName.Value & "') AND ([ User].password = '" & txtPassword.Value & "') )  "
  40.  
  41.         cmdpw = New OleDb.OleDbCommand(strsql, conpw)
  42.         rdrpw = cmdpw.executereader
  43.  
  44.         xx = 0
  45.         While rdrpw.read
  46.             xx = xx + 1
  47.             strmsg = rdrpw.item("userID") + rdrpw.item("userName")
  48.             strcounties = strcounties + strmsg
  49.         End While
  50.  
  51.         conpw.close()
  52.  
  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
  69.  
  70.     End Sub
  71.  
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
1 1766
kenobewan
4,871 Expert 4TB
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.

Similar topics

2 posts views Thread by Christopher D. Wiederspan | last post: by
5 posts views Thread by Fabio R. | last post: by
3 posts views Thread by Fabio R. | last post: by
6 posts views Thread by Prabha | last post: by
1 post views Thread by Prabha | last post: by
12 posts views Thread by =?Utf-8?B?QmlsbHkgWmhhbmc=?= | last post: by
reply views Thread by NPC403 | last post: by
1 post views Thread by fmendoza | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.