Avatar billede jimpp Nybegynder
10. august 2003 - 16:43 Der er 20 kommentarer og
5 løsninger

Database fejl på server

Hej jeg får følgende fejl på mit webhotel

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x498 Thread 0x590 DBC 0x2266094 Jet'.

/admin/default.asp, line 11

SCRIPT:

<%
SET RS = Server.CreateObject("ADODB.Connection")
(linje 11) rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")

If Request("mode") = "Check" then

    ' Authes user, password, and fixed a known securitybug to many login systems.
        strUsername = Trim(Replace(request("username"),"'","''" ))
        strPassword = Trim(Replace(request("password"),"'","''" ))

  Sql = "Select Count(*) as Found from users where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Næ næ du skrev ikke det magiske ord - hat"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("usersystem.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM users where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = myConn.Execute(strSQL)
    Session("login") = "Authed"
    Response.Redirect "admin.asp"
    EZ.Close
    RS.Close
    Conn.Close
  End if
End if
%>

-------------------------------------------

Hvad kan jeg gøre ved det?
Avatar billede hossein Nybegynder
10. august 2003 - 16:45 #1
Du har ikke retigheder til mappen hvor din DB ligger eller stien til din db er ikke korrekt.
Avatar billede eagleeye Praktikant
10. august 2003 - 16:45 #2
Det er fordi den ikke kan finde databasen i den angivne sti eller database filen hedder noget andet.
Avatar billede eagleeye Praktikant
10. august 2003 - 16:46 #3
Som koden er vist skal din database fil og ASP fil ligge i samme folder.
Avatar billede eagleeye Praktikant
10. august 2003 - 16:50 #5
På dit web-hotel hvor ligger database filen i forhold til din ASP koden?

Typsik skriver man den fulde sti til databasen på et web-hotal da db folderen ligger på samme højde som root for at beskytte mod folk som forsøger at downlaode db filen. De betyder man ikek kan bruge Server.MapPath("../xxx.mdb") til at connecte med, da man ikke med en relativ sti kan komme længere tilbage en root, derfor srkiver man den fulde sti.

rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=d:\homes\xxxxxdk\db\usersystem.mdb"
Avatar billede jimpp Nybegynder
10. august 2003 - 16:51 #6
Den ligger i samme mappe - og dte virkede for omkring 10 minutter siden?

altså mappen admin
Avatar billede eagleeye Praktikant
10. august 2003 - 16:57 #7
Ja så virker det noget underlidt. Har du prøvet at download din db og tjekke den ikke er blevet ødelagt??
Avatar billede jimpp Nybegynder
10. august 2003 - 16:58 #8
Jeg har uploadet den engang til unden resultat

...
Avatar billede eagleeye Praktikant
10. august 2003 - 17:00 #9
Du kan prøv at rette denne linje:

rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")

Til denne, men det skulle vist være det samme:

rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./usersystem.mdb")
Avatar billede jimpp Nybegynder
10. august 2003 - 17:12 #10
Nope det virker stadigt ikke... den anden database virker fint, så jeg prøvede at oprette en tabel der med samme navn - nu visen den formen, men kommer med samme fejl i det jeg prøver at logge ind :(
Avatar billede eagleeye Praktikant
10. august 2003 - 17:13 #11
Ok, så der er måske noget med den DB.

Du connecter to gange til DB på den side, også her, måsek det her den nye fejl kommer.:

  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("usersystem.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
Avatar billede vbcoder Nybegynder
10. august 2003 - 17:14 #12
Du kan faktisk trylle med Server.MapPath så du altid har den absolutte sti til basen.

e.x. azero.dk ligger db mappen på samme niveau som www (beskrevet ovenfor-hvorfor-sikkerhed mod downing)

server.mappath(".") & "../db/usersystem.mdb"

//vbcoder
Hvis du b
Avatar billede eagleeye Praktikant
10. august 2003 - 17:17 #13
Det faktisk lige netop det man ikke kan ../ virker ikke samme med den fysiske sti :)
Hvis du vil trylle skal du gøre det med Server.Mappath("/") og ikke "." da "." giver "denne folder" hvorimod "/" giver root. Samt lidt instr for at rette wwwroot til db.
Avatar billede vbcoder Nybegynder
10. august 2003 - 17:21 #14
okay der er forskel på /\  men bortset fra det er det rigtigt nok og sommetider på min hukommelse ;)

ex. fra en shop jeg har lavet

Set dbc = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath(".") & "\..\db\shoppen.mdb"
dbc.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

check det - du vil blive overrasket ;)
//vbcoder
Avatar billede eagleeye Praktikant
10. august 2003 - 17:22 #15
Det vist en MS bug, ikke underligt at IIS er den leteste server at hacke ;)
Avatar billede vbcoder Nybegynder
10. august 2003 - 17:24 #16
det kan være ;-)

//vbcoder
Avatar billede jimpp Nybegynder
10. august 2003 - 17:25 #17
virker heller ikke :(
Avatar billede eagleeye Praktikant
10. august 2003 - 17:30 #18
nej for det giver stadig samme DB, og der tyder på der er noget ved din fil som gør den ikke virker. Har du prøvet at køre en repair i Access på filen og uploade den igen?
(husk gem en backup)
Avatar billede hossein Nybegynder
10. august 2003 - 17:37 #19
prøv en anden driver f ex:
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(usersystem.mdb)
Avatar billede hossein Nybegynder
10. august 2003 - 17:43 #20
rettes:
Server.Mappath(usersystem.mdb) = Server.Mappath("usersystem.mdb")
Avatar billede somaliomar Praktikant
10. august 2003 - 19:13 #21
Jeg har engang løst dette problem ved at bruge Hossein's forslag:

<%
SET myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("usersystem.mdb")


If Request("mode") = "Check" then

  ' Authes user, password, and fixed a known securitybug to many login systems.
  strUsername = Trim(Replace(request("username"),"'","''" ))
  strPassword = Trim(Replace(request("password"),"'","''" ))

  Sql = "Select Count(*) as Found from users where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = myConn.Execute(Sql)

  if LO("Found") = 0 then
    Session("login") = ""
    error = "Næ næ du skrev ikke det magiske ord - hat"
  else
    Session("login") = "Authed"
    Response.Redirect "admin.asp"
  End if

  Lo.Close
  Set LO = Nothing
End if

myConn.Close
Set myConn = Nothing
%>
Avatar billede vbcoder Nybegynder
10. august 2003 - 20:07 #22
Personligt tror at din udbyder har været igang med en flytning fra en server til en anden og så har han 'glemt' skriverettigheder på admin-mappen.

Jeg flyttede engang nogle hosting kunder og 'glemte' rettigheder på deres db mappen - fy for den lede mand.

Nå - min tidligere post vedr den absolutte sti til db har en fejl ..

fejlen er at der kun er et . i server.mappath(".")

der skal være to server.mappath("..") eller ("/") eller ("\")

http://visualcoder.dk/testasp/testmappath.asp

//vbcoder
Avatar billede vbcoder Nybegynder
10. august 2003 - 20:10 #23
server.mappath("..") & "\..\db\data.mdb"

//vbcoder
Avatar billede vbcoder Nybegynder
10. august 2003 - 20:11 #24
giver din absolutte sti til db - uanset hvad udbyder måtte finde på af sære sturkturer

//vbcoder
Avatar billede jimpp Nybegynder
11. august 2003 - 21:33 #25
Intet virkede men tak for hjælpen - har valgt at lave et script uden db :(

any ways points til alle!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester