|
Dear Dave,
Thanks for your response. I did find my problem, and i want to ask if you know the reason. I had shared the drive but it was a "default share", that i don't know wht it is. One of my co-workers propesed to set "Don't share this folder" ,and then make a new share. and the problem was solved!
But we do not know the reason. I would be greatful if you could send me the reason
|
|
|
|
|
On Windows 2000, the default Share permissions are for Everyone (authenticated or not) to have Full Control, Change, and Read. This allows anyone connecting through the share access to the files behind it. But, this is just the front door. NTFS permissions take effect after you get through the share "door".
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
A default share on a disk is an administrative share. Only administrators can use them.
Windows has a number of administrative share. For example a c partition is shared as \\<server>\c$, and the window directory is shared as \\<server>\admin$. The $ behinds the share means the share is hidden (not visible in explorer).
-- modified at 5:27 Saturday 24th February, 2007
Wout Louwers
|
|
|
|
|
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)
While I've got code below which is VB.NET-related, to me I think this is an OS-related topic; but I could be wrong..
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)
1 <appsettings>
2 <add key="strConnectAccess" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Server3\MSAccess\DatabaseFile.mdb">
3
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 ap[ears 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.
Here is my "connect" code (modified to protect a client's database)
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
So, in all, this error [below] is occuring, it does point to "permissions" of some kind, I think. the Database is not set to exclusive. "Everyone" and "guest" have "Read/Write" to all files in folder (yes, a security hole).
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.
FYI ~ I have set all 3 servers up with the same username/password (used by IIS). The user account on Server3 has full control to the folder and file.
I did create a page on Web1 and Web2 that accesses an image in the same directory on Server3 (for display on a web page), and the image displays fine.
I did visit Microsoft's website and read through several KB articles, but no success; #253580, #315276 (NTRights Utlitity)
The NTRights utility (KB #315276) adds permissions from ServerA to access content on ServerB.
Thing is, how to I "connect" from a webfarm not on a domain to a server (Server3) which is on a domain?
ASP ~ Apple Simply Performs
|
|
|
|
|
First, you shouldn't be using an Access database for this. SQL Server would be more appropriate and it would also solve the problem you have.
Your web server can't get at the Access database because they are not part of the domain. The domain doesn't trust those two web server machines. Since Access database are file based, you actually need a domain user account that the web application uses to login to the server with the database. This comes down to understanding how Window networking works. BTW: Using the C$ share is a very bad idea and a HUGE security risk.
Now, if you had SQL Server, or some other "real" database engine on Server3, this wouldn't be a problem because your web app could just use TCP/IP to get at the database without worry about a domain account or Windows Networking.
The solution is either move the database to a database engine that supports TCP/IP calls or to add the two web servers to the domain and resetup your IIS website to use a domain account to login and run. That same account would also have to be given the appropriate rights to a share you create on the Server3 machine so your web app can get at it's data.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Dave,
I agree 100% with you, coming to the same conclusion.
The MS Access database is used both externally via an ASP.NET v1.1 web app and internally via a separate MS Access db that has all the forms and reports the clent has been using.
Our current plan of action is:
1) Migrate the external web app to ASP.NET 2.0
2) Migrate the Access database to SQL Server
3) Create internal web-app for the new SQL version
New plan, which I'll need to present:
1) Migrate the Access DB to SQL Server
2) Create internal web-app for the new SQL version
3) Migrate the external web app to ASP.NET 2.0
Thx,
Gary
ASP ~ Apple Simply Performs
|
|
|
|
|
Gary Noter wrote: 1) Migrate the Access DB to SQL Server
A relatively quick workaround might be to migrate the data to SQL Server then create linked tables in Access to the SQL version tables. Hopefully, you could still use the Access Forms and Reporting without actually having to rewrite the whole thing in a web app, for the short term anyway...
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
We had tried this one time and several Access macros seemed to choke.
That was a while back, now that I know more on the entire subject, I'll try this approach again.
Thx
ASP ~ Apple Simply Performs
|
|
|
|
|
I am using the reg add command to add a couple registry keys to my system. I need to set this up in a script so that it is added automatically and it seems the -f option is what I am looking for but when I add the -f to the end of my command line it tells me I have too many command line parameters. Without -f it works fine.
Any recommendations?
|
|
|
|
|
LOL, you can ignore this post now...its all the difference in the world between a – and a /
mods can delete if you like
|
|
|
|
|
|
Hi all,
I have a small office of 25 computer .
I want to all computer's clock show the same time. how do this ,either manually or any other
method for this .
plz sugess me
Thanks for this.
nilesh
|
|
|
|
|
in dos console, type
net time /set
of course, you must have a time server configured somewhere on the network
|
|
|
|
|
You can have this in a batch file and put on startup. But what happens when the logon user does not administrative privileges to set the time?
|
|
|
|
|
Thanks for ur Replay.
nilesh
|
|
|
|
|
If your network environment is client/server, all of your client computer will have the same time as the server too.
|
|
|
|
|
Thanks for ur Replay.
nilesh
|
|
|
|
|
how to mount LVM on puppy linux
|
|
|
|
|
|
I want to access USB port of my PC...
How can i proceed..
Regards
vijay
|
|
|
|
|
Please provide more description relate to your question.
|
|
|
|
|
Iam doing an application in VC++ to detect the USB device connected to USB port.
In thsi site i got some sample coding to detect the adding and removal of hardware
www.codeproject.com/useritems/HwDetect.asp
But in this only when the application is running then only it can detect the adding/removing..
But if already device is connected and if then the application is run, then i want to detect the device..
Can anyone help with sample coding..
Thanks in advance
Regards
vijay
|
|
|
|
|
How the OS deals with USB devices...
Regards
vijay
|
|
|
|
|
If you are really interested, try the source-code of "hotplug" and/or "udev", both used to handle hotplugging devices under Linux.
Cheers,
Sebastian
--
Contra vim mortem non est medicamen in hortem.
|
|
|
|
|
Hi
All of u
I have window 2000 advanced server operating system . Virous attacked on my system .]
I scaned for virous and delete all .
But now my IE is not working and Mozilla firefox
is working properly .
So how i solved my IE problem .
Plz guess me.
Thanks for this
nilesh
|
|
|
|